snow爱 2022-02-07 14:53 采纳率: 66.7%
浏览 66
已结题

Java递归方式求斐波那契数代码“解析”,需要详解

请使用递归的方式求出斐波那契数11235813...给你一个整数n,求出它的值是多少
public class RecursionExercise01{
    public static void main(String[] args){
        Figure fi = new Figure();
        int n=fi.rec(8);
        if(n !=-1){
        System.out.println("对应的斐波那契"+n);
    }
    }
}
class Figure{
    public int rec(int num){
        if(num>=1){
        if(num == 1||num == 2){
            return 1;
        }else{
            return rec(num-1)+rec(num-2);
        }
        }
        else{
            System.out.println("要求输入的数>=1");
            return -1;
        }
    }
}

代码是怎么运行的,return rec(num-1)+rec(num-2);递归怎么返回数值的,详细,一定要详细。

  • 写回答

5条回答 默认 最新

  • CCCCCCCYYY_ 2022-02-07 15:08
    关注

    你随便代入一个数进去跑一遍就理解了,就是不断调用函数自身直到底层层层递进返回结果后再累加。
    1.比如rec(4),进到return rec(3)+rec(2);
    1.1但这时候rec(3)没有值返回,他也需要调用一遍rec()这个函数,即rec(3)会进到rec(2)+rec(1);
    1.2这个时候,rec(2) = 1和rec(1) =1有返回值了,这结果就返回到上一步rec(3)这里,即rec(3)=1+1=2;
    2.rec(3)得到结果2后,返回第一步,得rec(4)=2+rec(2);
    3.然后rec(2)会返回1,即rec(4)=2+1=3;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月15日
  • 已采纳回答 2月7日
  • 创建了问题 2月7日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵