Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)

1.这个问题是如下的:

   有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的对数?

分析:我们找规律

      兔子对数
第1个月:    1
第2个月:    1
第3个月:    2
第4个月:    3
第5个月:      5
第6个月:    8
……
由此可见兔子的对象数据是:
 1,1,2,3,5,8,……
• n=1或者n=2,result=1;

• n>=3,result=fun(n-1)+fun(n-2);

2. 代码实现:

 1 package com.himi.diguidemo;
 2 
 3 
 4 /**
 5  * 
 6  *有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的 对数?
 7  *分析:我们找规律
 8  *         兔子对数
 9  *第1个月:            1
10  *第2个月:            1
11  *第3个月:            2
12  *第4个月:            3
13  *第5个月:            5
14  *第6个月:            8
15  *……
16  *由此可见兔子的对象数据是:
17  *   1,1,2,3,5,8,……
18  *   
19  * 如何实现这个程序呢?
20  *         A:数组实现
21  *         B:变量的变化实现
22  * 假如相邻的两个月的兔子对数为a,b
23  * 第1个月:   a=1,b=1
24  * 第2个月:   a=1,b=2
25  * 第3个月:   a=2,b=3
26  * 第4个月:   a=3,b=5
27  * 看到了:下一次的a是以前的b,下一次的b是以前的a+b
28  * 
29  *          C:递归实现
30  */
31 public class DiGuiDemo2 {
32 
33     public static void main(String[] args) {
34         //数组实现
35         int[] arr = new int[20];
36         arr[0] = 1;
37         arr[1] = 1;
38         for(int i =2; i<=arr.length-1; i++) {
39             arr[i] = arr[i-1]+arr[i-2];
40         }
41         System.out.println("数组实现---第20月兔子的对数:"+arr[19]);
42         
43         System.out.println("=============================");
44         //变量的变化实现
45         int a=1; 
46         int b=1;
47         for(int i=0; i<18; i++){
48             int temp =a;                //保存a的初试值
49             a = b;                      //这里的a发生了变化,而下面需要使用到a的初始值,所以上面定义了int temp = a;
50             b = temp+b;
51         }
52         System.out.println("变量的变化实现---第20月兔子的对数:"+b);
53         
54         System.out.println("=============================");
55         
56         //递归实现
57         System.out.println("递归实现---第20月兔子的对数:"+func(20));
58 
59     }
60     
61     public static int func(int n) {
62         if(n==1 || n==2) {
63             return 1;
64         } 
65     
66         return func(n-1)+func(n-2);
67     }
68 
69 }

运行结果如下:

原文地址:https://www.cnblogs.com/hebao0514/p/4850243.html