JAVA编程---递归
Posted 猿头猿脑的王狗蛋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA编程---递归相关的知识,希望对你有一定的参考价值。
作业要求:
利用递归来计算出 从1加到100的数和 ;
public class 递归 {
public static void main(String[] args) {
System.out.println(diGui(100));
}
public static int diGui(int n) {
//接收输入 n=1 的情况并输出结果
if (n == 1) return 1;
/*在else的return中,再次进入digui()前,前面的 n 都已经进入到了加法运算中,后面的递归操作结束在当 新n=1 时,最后返回的是1,然后进入
到加法运算中,此时加法运算结束,返回值产生;通过上一行中的流程分析得知:if(n==1)对 n=1 情况的选择步骤是必需的,否则递归无法形成,若要
计算一个数的阶乘也是相同的道理,只需把第二个选择中的代码返回值运算改为“*”即可,如:return n*diGui(n-1);*/
else return n + diGui(n - 1);
}
}
输出结果:
5050
Process finished with exit code 0
总结:由于递归是“ 自己调用自己的结构 ”,所以必须要手动设定一个选择卡口来拦截“ 已经找到结果的那一次调用自己 ”,并让方法的递归循环在此时结束,返回结果。
博主能力有限,若程序有bug或有其他不当之处,请狠狠打脸博主 (~ ̄(OO) ̄)ブ
递归编程解决汉诺塔问题。用Java实现
package 汉尼拔;
import java.util.*;
public class 汉尼拔
{
static Scanner sc=new Scanner(System.in);
static int disk=sc.nextInt();
public static void main(String[] args)
{
// TODO Auto-generated method stub
Hannibal(disk,‘A‘,‘B‘,‘C‘);
System.exit(0);
}
public static void Hannibal(int Topdisk,char A,char B,char C)
{
if(Topdisk==1)
System.out.println("盘子 1 从 "+A+" 到"+C);
else
{
Hannibal(Topdisk-1,A,C,B);
System.out.println("盘子 "+Topdisk+" 从 "+A+" 到"+C);
Hannibal(Topdisk-1,B,A,C);
}
}
}
以上是关于JAVA编程---递归的主要内容,如果未能解决你的问题,请参考以下文章
java编程: 1.用递归方法编写:用java语言写! 输出如下所示: 1 1 2 1 1 2 3 2 1 的代码帮我写下!