- /*
- * 这是递归问题,也是数学中的斐波那契数列问题,规律就是前两个数字之和等于第三个数。
- 月份 兔子数目
- 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);//第三个月开始,该月兔子数目等于前两月数组之和,返回这个和。
- }
-
- }
- }
复制代码 |