求迭代算法答案需要java高手或数学高手帮帮哈 题目如下:

题目如下:
说有一只狗狗从第四年开始生下一只小狗,并且以后的每一年生下一只,而被生下的这些小狗也是第四年开始生下一只小狗并以后的每年生下一只,问第十年生下多少只。
求java代码或公式。^_^
就是网上的兔子迭代算法的三个月变成四年 给我弄晕了

//n为成长时间,m为总时间
public static int countRabbit(int n, int m){
int count = 0;
for(int i = n; i <= m; i++){
count++;
if((m-i+1)>0){
count += countRabbit(n, m-i + 1);
}
}
return count;
}
这跟遍历二叉树一样,都是采用递归的思想,解决这类问题主要是找准迭代条件追问

为啥我得到的都是0呢?这道题的目的是得到每一年的总数,所以我将代码稍做添加输入的语句后得到的全是0,如下:
public class OOO {
public static int counts(int n,int m){
int count=0;
for(int i=n;i<=m;i++){
count+=counts(n,m-i+1);
System.out.println(count);
}
return count;
}
public static void main(String[] args) {
counts(4,10);
}
}

追答

count的值一直为0,所以你再加多少个count还是等0

追问

可是为什么呢?count不就是每一年的狗狗总数不是,这段代码不是为了求出总数吗?

追答

我是按照兔子来进行迭代的,也就是说一只兔子在m年里可以繁殖多少只兔子
你说一年有多少只兔子的话,就得重新思考了,让我再想一会
这个函数中的m不就是年份吗,把m的值设置为1,2,。。。10,不就求出来每一年的兔子数了吗

追问

不是,这个问题和兔子的一样,只是一个为月,一个为年,打个比方:
前三年只有一只兔子,
第四年兔子生了一只,所以有2只,
第五年第一只兔子又生了一个,为3只,
第六年第一只兔子又生了一个,为4只,
第七年第一和第二都生了,为6只,
第八年第一和第二和第三都生了,为9只,
这样的即结果为开始的时候是:1,1,1,2,3,4,6,9

我试验了,你看我的代码里,在主方法里面引用了那个方法加入的参数是4,10

追答

我写的程序中没有计算最开始的那只兔子,所以借结果是
0,0,0,1,2,3,5,8,12,18
主方法中的代码
for(int i = 1; i<=10; i++){
countRabbit(4, 10);
System.out.println(countRabbit(4, i));
}

追问

可是我运行的结果是0,0,0,0,0,0,0,0,0,0.。。。。。。

就是我第一个追问里面的那段代码

追答

我把全部代码给你
public static void main(String[] args) {
for(int i = 1; i0){
count += countRabbit(n, m-i + 1);
}
}
return count;
}

我在网上找了一点资料,兔子问题是斐波那契数列,即a(n)=a(n-1)+a(n-2)
public static int countRabbits(int n){
if(n>2){
return countRabbits(n-1) + countRabbits(n-2);
}else{
return 1;
}
}
其中的参数n即为年数,但是这个跟你提的问题有不一样的地方
我已经笔算到15年了,我相信我的答案是对的

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答