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.nio:最简洁的递归目录删除

Java基础入门五)之方法以及递归算法

递归代码以退出代码 3221225477 退出

Java 基础语法方法的使用

java编程: 1.用递归方法编写:用java语言写! 输出如下所示: 1 1 2 1 1 2 3 2 1 的代码帮我写下!

java基础3-重载+命令行传参+递归+数组+排序