兔子繁殖问题Java代码 兔子问题java完整代码

如何用Java程序编程,最好讲解一下。题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对

这道题目考察的是运用递归(数列)的思路去解决问题。

多端合一响应式网站设计: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年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

参考资料:

百度百科:斐波那契数列

百度百科:递归函数

急急急!!!!!java编写兔子繁殖

斐波那契数列,即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);

}

代码没去跑,不过思路大概是这样

java用递归编程(兔子问题)

这个是

斐波那契数列

的问题,根据要求编写的

程序

如下:

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

参考资料:百度百科-兔子繁衍奥数题及答案


分享标题:兔子繁殖问题Java代码 兔子问题java完整代码
分享URL:http://cdiso.cn/article/dooeopo.html

其他资讯