m0_46864401
m0_46864401
采纳率33.3%
2020-04-07 14:00

求解答《斐波那契数列算法》的代码注释— 题目:古典问题:有一对兔子,从出生后第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条回答

  • qq_45370866 辰行 1年前

    你好。
    首先,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 评论 复制链接分享
  • qq_36911145 封印di恶魔 1年前

    这里用的是基本类型,mun,mun1,mun2都是数值,mun = mun2 代表将mun2的值给mun,而不是mun恒等于mun2
    例如现在 mun1为1 mun2为2,那段代码的意思就是
    mun = 2
    mun2 = 1 + 2
    mun1 = 2

    点赞 评论 复制链接分享

相关推荐