m0_46864401 2020-04-07 14:00 采纳率: 33.3%
浏览 748
已采纳

求解答《斐波那契数列算法》的代码注释— 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

public static void rabbit() {
        int mun1=1,mun2=1;
        int mun;
        int month=10;
        for(int i=1;i<=month;i++) {
        if(i<=2) {
        System.out.println("第"+i+"个月的兔子总数量是1对");
                 }else {
                mun=mun2;
                mun2=mun1+mun2;
                mun1=mun;
        System.out.println("第"+i+"个月的兔子
            总数量是"+mun2+"对");
            }
        }
```重点解答一下
                mun=mun2;
                mun2=mun1+mun2;
                mun1=mun;
            System.out.println("第"+i+"个月的兔子
            总数量是"+mun2+"对");
这串代码的意思,数学不好搞了一个小时没搞明白为什么是这样子写,
**mun**的值在**mun2=mun1+mun2**这串代码里是否也变成**了mun1+mun2?**
  • 写回答

2条回答 默认 最新

  • 辰行 2020-04-07 14:15
    关注

    你好。
    首先,mun的值没有变成mun1+mun2。因为,先将mun2的值复制给了mun,此处仅仅是把mun2的值复制给mun,随后mun 和mun2便没有任何联系了。
    对于上述三行代码:斐波那契数列是:1、1、2、3、5、8、13、21、34....开始时,mun1=1,mun2=2 然后经过一次循环上述三行代码后,mun1=1,mun2=2
    再经过一次循环后,mun1=2,mun2=3 由此可见这三行代码是将mun1,mun2依次后移
    由斐波那契数列公式可知:f(n)=f(n-1)+f(n-2)
    希望能够帮助你理解

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

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置