递归三要素:
1、明确递归终止条件;
2、给出递归终止时的处理办法;
3、提取重复的逻辑,缩小问题规模。
1、1+2+3+…+n
import java.util.scanner;public class recursion { public static void main(string[] args) { scanner in = new scanner(system.in); int n = in.nextint(); system.out.println(sum(n)); } public static int sum(int n) { if(n == 1) { return n; } else { return n + sum(n-1); } }}
2、1 * 2 * 3 * … * n
(推荐学习:java视频教程)
import java.util.scanner;public class recursion { public static void main(string[] args) { scanner in = new scanner(system.in); int n = in.nextint(); system.out.println(multiply(n)); } public static int multiply(int n) { if(n == 1) { return n; } else { return n*multiply(n-1); } }}
3、斐波那契数列
前两项均为1,第三项开始,每一项都等于前两项之和。即:1,1,2,3,5,8,…
import java.util.scanner;public class recursion { public static void main(string[] args) { scanner in = new scanner(system.in); int n = in.nextint(); system.out.println(fun(n)); } public static int fun(int n) { if (n <= 2) { return 1; } else { return fun(n-1) + fun(n-2); } }}
4、二叉树的遍历(前、中、后)
import java.util.arrays;import java.util.linkedlist;public class mybinarytree { //二叉树节点 private static class treenode{ int data; treenode leftchild; treenode rightchile; public treenode(int data) { this.data = data; } } //构建二叉树 public static treenode createbinarytree(linkedlist<integer> inputlist) { treenode node = null; if(inputlist == null || inputlist.isempty()) { return null; } integer data = inputlist.removefirst(); //如果元素为空,则不再递归 if(data != null){ node = new treenode(data); node.leftchild = createbinarytree(inputlist); node.rightchile = createbinarytree(inputlist); } return node; } //前序遍历:根节点,左子树,右子树 public static void preordertraveral(treenode node) { if (node == null) { return; } system.out.println(node.data); preordertraveral(node.leftchild); preordertraveral(node.rightchile); } //中序遍历:左子树,根节点,右子树 public static void inordertraveral(treenode node) { if(node == null) { return; } inordertraveral(node.leftchild); system.out.println(node); inordertraveral(node.rightchile); } //后序遍历:左子树,右子树,根节点 public static void postordertraveral(treenode node) { if (node == null) { return; } postordertraveral(node.leftchild); postordertraveral(node.rightchile); system.out.println(node.data); } public static void main(string[] args) { linkedlist<integer> inputlist = new linkedlist<integer>(arrays.aslist(new integer[]{3,2,9,null,null,10,null,null,8,null,4})); treenode treenode = createbinarytree(inputlist); system.out.println("前序遍历:"); preordertraveral(treenode); system.out.println("中序遍历:"); inordertraveral(treenode); system.out.println("后序遍历:"); postordertraveral(treenode); }}
相关文章教程分享:java入门教程
以上就是java递归算法实例的详细内容。