java递归算法实例
Java  /  管理员 发布于 8年前   169
递归三要素:
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递归算法实例的详细内容,更多请关注其它相关文章!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号