重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这道题目考察的是运用递归(数列)的思路去解决问题。
多端合一响应式网站设计:PC+平板+手机,同一后台修改数据多端同步更新提交您的需求,获取网站建设与营销策划方案报价,我们会在1小时内与您联系!
假设到第24个月,示例代码如下:
public class woo {
public static void main(String args[]) {
System.out.println(fib(24));
}
private static int fib(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return fib(n - 1) + fib(n - 2);
}
}
}
扩展资料:
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……。
在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
参考资料:
百度百科:斐波那契数列
百度百科:递归函数
斐波那契数列,即1,1,2,3,5,8.... 对兔子 a[n]=a[n-1]+a[n-2]
即第n个月的兔子数是前两个月的和
由于寿命10月,从第11月开始考虑,第11月死了一月那一对兔子,同时第一月的兔子在第11月由于死了无法生出新兔子,相当于从rabbit(11)里减去2*rabbit(1),对应第12月相当于少了reduce_rabbit(11)外加第一月的兔子由于死亡没能在12生出的一对,即2*2+2=6只, 第11到第16月对应无死亡情况减少的数量,单位是只, 2*2 3*2 6*2 10*2 17*2 28*2,可以发现规律是a[n]=a[n-1]+2*rabbit[n-2]+rabbit(n-1)
//无死亡情况兔子数
int rabbit(int n){
if(n==1||n==2)
return 2;
return (rabbit(n-1)+rabbit(n-2));
}
//有死亡情况,第n月相对于无死亡减少的兔子数
int reduce_rabbit(int n){
if(n==11)
return 2*2;
if(n==12)
return 2*2+2;
return (reduce_rabbit(n-1)+2*rabbit(n-2)+rabbit(n-1));
}
//main
public static void main(String[] args){
int result=rabbit(20)-reuduce_rabbit(20);
System.out.print(result);
}
代码没去跑,不过思路大概是这样
这个是
斐波那契数列
的问题,根据要求编写的
程序
如下:
public
class
Fibonacci
{
static
int
mb_Fibonacci(int
n){
if(n==1)
return
1;
if(n==2)
return
1;
return
mb_Fibonacci(n-1)+mb_Fibonacci(n-2);
}
public
static
void
main(String[]
args)
{
System.out.println(mb_Fibonacci(13));
}
}
运行结果:
233
20个月后一共6765对兔子。
在700多年前,意大利有一位著名数学家斐波那契在他的《算盘全集》一书中提出了这样一道有趣的兔子繁殖问题。他先用列举法计算出各个月兔子对数,并进行了仔细观察,从中发现了一个十分有趣的规律,就是后面一个月份的兔子总对数,恰好等于前面两个月份兔子总对数的和。
1月兔子等于1对。
2月兔子等于1对。
3月兔子对数等于1月与2月兔子数相加等于2对。
4月兔子对数等于2月与3月兔子数相加等于5对。
后面依次类推。
扩展资料:
递归方法计算兔子繁殖问题:
根据实际问题,设置两个基本事件:rabbit(1)=1和rabbit(2)=1,由此,递归定义式为:
rabbit(n)=1when n=1 or n=2;
rabbit(n)=rabbit(n-1)+rabbit(n-2)when n2;
rabbit(1),rabbit(2),rabbit(3),... ... 称为Fibonacci序列,它是许多自然现象的模型。
rabbit(n)的Java方法:
[java]view plaincopy
publicstaticint rabbit(int n){
//------------------------------------------
//Computes a term in the Fibonacci sequence
//Precondition:n is a positive integer
//Postcondition:Returns the nth Fibonacci number
//------------------------------------------
if(n=2){return1;}
else {//n2, so n-10 and n-20
return rabbit(n-1)+rabbit(n-2);
}//end if
}//end rabbit
参考资料:百度百科-兔子繁衍奥数题及答案