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 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上