黑马程序员技术交流社区
标题:
兔子繁殖的问题
[打印本页]
作者:
不再上网
时间:
2014-8-22 01:25
标题:
兔子繁殖的问题
题目是:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问某个月的兔子总数为多少?
网上找到的代码都是C的。有哪位大神可以帮忙搞个JAVA的来学习下嘛?最好可以带上注释的
作者:
依然超级赛亚人
时间:
2014-8-22 07:05
/*
* 这是递归问题,也是数学中的斐波那契数列问题,规律就是前两个数字之和等于第三个数。
月份 兔子数目
1 1
2 1
3 2
4 3
5 5
6 8
.... .....
兔子数目的规律已经很明显了吧?前两月的数目之和等于第三个月,以此类推。
前两个月有点区别,就是此时没有新兔子降生,所以把它单独作为分段函数中的
一种情况,所以这个问题用分段函数表示就是:
{f(x)=1 , x=1或x=2
{f(x)=f(x-1)+f(x-2) ,x>2
用java语言表示就是下面的程序。
*
*
* */
public class Tuzi {
public static void main(String[] args) {
//求第十个月的兔子数目,可以自己略微改动求其他数,但不要太大,递归数太大内存容易溢出。
int i = 10;
//调用tuziNum()方法,直接打印结果。
System.out.println("第"+i+"个月的兔子对数为:"+tuziNum(i));
}
//定义了一个求兔子数目是方法。
private static int tuziNum(int i) {
if(i==1||i==2){//当月份是1或2时,兔子数目都是1,这两种情况下直接返回1.
return 1;
}else{
return tuziNum(i-1)+tuziNum(i-2);//第三个月开始,该月兔子数目等于前两月数组之和,返回这个和。
}
}
}
复制代码
作者:
Kikyou
时间:
2014-8-22 08:22
这个有很多啊
作者:
谢建平
时间:
2014-8-22 09:27
第一个月2只 第三个月 4只 第6个月 8只 第N月=2* 2的N/3次方
作者:
唐覃利
时间:
2014-8-22 20:40
看看
作者:
子阳zy
时间:
2014-8-22 20:53
package jichu;
import java.util.*;
public class Rabbit {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s =new Scanner(System.in);
System.out.println("请输入第几个月");
int n=s.nextInt ();
System.out.println("第"+n+"个月的兔子是"+shu(n));
}
private static int shu(int n) {
if(n<3)
return 1;
else
return shu(n-1)+shu(n-2);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2