经典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子对数为多少?

988 阅读1分钟
//代码如何下
package test01;
import java.util.Scanner;//导入模块
public class Test3 {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.println("请输入你想要的当月的月数:");
		int n= s.nextInt();
		System.out.println("当第"+n+"个月后,兔子有" + Sum(n) + "对");
	}
	private static int Sum(int n){
		if(1 == n || 2 == n){
			return 1;
		}else{
			return (Sum(n-1) + Sum(n-2));
		}
	}
}

说明:

月数      兔子对数                  说明
1          1                      第一个月一对
2          1                      
3          1 +1                   第一对从出生起第三个月生第二对
4          1+1 +1                 三个月满了后,第一对每个月生一对
5          1 +1 +1 +1+1           第二对兔子满三月开始生一对
6          1+1 +1+1 +1+1 +1+1     第二对兔子每月开始生一对 
7          ......

兔子每月个数:1 ,1 ,2,3,5,8

规律就是,前两月的和就是第三月,得出:f(n)=f(n-1)+f(n-2)

第一月和第二月是基数,所以从第三月开始相加,第一二月总数为一只