标题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每 ...
只看楼主
坠空
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-12-8
 问题点数:0 回复次数:3 
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?大佬们这个哪里出问题了
public class Prog1{

       public static void main(String[] args){

              int n = 10;

              System.out.println("第"+n+"个月兔子总数为"+fun(n));

       }

       private static int fun(int n){

              if(n==1 || n==2)

                 return 0;

              else

                 return fun(n-1)+fun(n-2);

       }

}

[此贴子已经被作者于2022-12-10 08:10编辑过]

搜索更多相关主题的帖子: 多少 int 兔子 return fun 
2022-12-09 10:02
加法
Rank: 1
等 级:新手上路
帖 子:33
专家分:2
注 册:2013-11-3
得分:0 
if里面应该是return 1;一开始就存在一对兔子
2022-12-12 11:36
沈和
Rank: 2
等 级:论坛游民
威 望:5
帖 子:22
专家分:81
注 册:2019-8-26
得分:0 
这像是一道数列问题。

n = 1, a1 = 1
n = 2, a2 = 1
n = 3, a3 = 1 + 1 = a2 + a1
n = 4, a4 = 2 + 1 + 1 = a3 + a2 + a1

a[n+1] = Sn

通过观察可知有一下规律,可以通过不完全归纳法证明
a1 = 1
n>1, an = 2^(n-2)

程序代码:
    private static int rabbits(int n){
        if (n == 1) {
            return 1;
        }
        else {
            return 1 << (n-2);
        }
    }


////////

上面的分析写错了。

n = 1, 小兔子 1 只
n = 2, 大兔子 1 只
n = 3, 大兔子 1 只 + 小兔子 1 只
n = 4, 大兔子 2 只 + 小兔子 1 只
n = 5, 大兔子 3 只 + 小兔子 2 只

a[n] = a[n-1] + a[n-2]

程序代码:
    private static int rabbits(int n){
        if (n == 1 || n == 2) {
            return 1;
        }
        else {
            return rabbits(n-1) + rabbits(n-2);
        }
    }


[此贴子已经被作者于2023-4-21 21:10编辑过]

2023-04-19 21:10
东海ECS
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
这个程序存在以下问题:

1.程序中的fun函数的返回值不正确。

2.程序没有考虑兔子的繁殖能力,只是递归调用自身。

下面是修改后的代码:

程序代码:
public class Prog1 {

    public static void main(String[] args) {
        int n = 10;
        System.out.println("第" + n + "个月兔子总数为" + fun(n));
    }

    private static int fun(int n) {
        if (n == 1 || n == 2)
            return 1; // 第1个月和第2个月都只有一对兔子
        else
            return fun(n - 1) + fun(n - 2) * 2; // 递归计算兔子总数
    }

}

修改后的程序中,fun函数的返回值表示第n个月的兔子总数,根据题目规定,每对兔子在第三个月后都可以繁殖,因此第n个月的兔子总数相当于第n-1个月的兔子总数加上第n-2个月的兔子总数乘以2。在第n-1个月的兔子总数中包含了第n-2个月的兔子总数,因此需要将第n-2个月的兔子总数乘以2,避免重复计算。最后,第1个月和第2个月的兔子总数都是1对。

会当凌绝顶,一览众山小.
2023-04-21 19:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510902-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.333272 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved