java递归算法的实例详解
递归三要素:
1、明确递归终止条件;
2、给出递归终止时的处理办法;
3、提取重复的逻辑,缩小问题规模。
1、1+2+3+…+n
importjava.util.Scanner;
publicclassRecursion{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
intn=in.nextInt();
System.out.println(sum(n));
}
publicstaticintsum(intn){
if(n==1){
returnn;
}
else{
returnn+sum(n-1);
}
}
}
2、1*2*3*…*n
importjava.util.Scanner;
publicclassRecursion{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
intn=in.nextInt();
System.out.println(multiply(n));
}
publicstaticintmultiply(intn){
if(n==1){
returnn;
}
else{
returnn*multiply(n-1);
}
}
}
3、斐波那契数列
前两项均为1,第三项开始,每一项都等于前两项之和。即:1,1,2,3,5,8,…
importjava.util.Scanner;
publicclassRecursion{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
intn=in.nextInt();
System.out.println(fun(n));
}
publicstaticintfun(intn){
if(n<=2){
return1;
}
else{
returnfun(n-1)+fun(n-2);
}
}
}
4、二叉树的遍历(前、中、后)
importjava.util.Arrays;
importjava.util.LinkedList;
publicclassMyBinaryTree{
//二叉树节点
privatestaticclassTreeNode{
intdata;
TreeNodeleftChild;
TreeNoderightChile;
publicTreeNode(intdata){
this.data=data;
}
}
//构建二叉树
publicstaticTreeNodecreateBinaryTree(LinkedListinputList){
TreeNodenode=null;
if(inputList==null||inputList.isEmpty()){
returnnull;
}
Integerdata=inputList.removeFirst();
//如果元素为空,则不再递归
if(data!=null){
node=newTreeNode(data);
node.leftChild=createBinaryTree(inputList);
node.rightChile=createBinaryTree(inputList);
}
returnnode;
}
//前序遍历:根节点,左子树,右子树
publicstaticvoidpreOrderTraveral(TreeNodenode){
if(node==null){
return;
}
System.out.println(node.data);
preOrderTraveral(node.leftChild);
preOrderTraveral(node.rightChile);
}
//中序遍历:左子树,根节点,右子树
publicstaticvoidinOrderTraveral(TreeNodenode){
if(node==null){
return;
}
inOrderTraveral(node.leftChild);
System.out.println(node);
inOrderTraveral(node.rightChile);
}
//后序遍历:左子树,右子树,根节点
publicstaticvoidpostOrderTraveral(TreeNodenode){
if(node==null){
return;
}
postOrderTraveral(node.leftChild);
postOrderTraveral(node.rightChile);
System.out.println(node.data);
}
publicstaticvoidmain(String[]args){
LinkedListinputList=newLinkedList(Arrays.asList(newInteger[]{3,2,9,null,null,10,null,null,8,null,4}));
TreeNodetreeNode=createBinaryTree(inputList);
System.out.println("前序遍历:");
preOrderTraveral(treeNode);
System.out.println("中序遍历:");
inOrderTraveral(treeNode);
System.out.println("后序遍历:");
postOrderTraveral(treeNode);
}
}
以上就是java递归算法实例的详细内容,大家如果有任何补充的地方可以联系毛票票小编。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。