题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21....
题目来源:http://blog.sina.com.cn/s/blog_60fafdda0100wb21.html
观察规律,可以发现,自从第三个月开始,每个月的兔子总数为前两个月兔子总数之和。
Java实现
1 public class TestRabbit {// TestRabbit类 2 public static void main(String args[]) { 3 TestRabbit tb = new TestRabbit(); 4 int n=12; 5 int Sum = tb.Calculate(n);// n代表第个月 6 System.out.printf("第 %d个月的兔子总数为:%d",n,Sum);//格式化输出时使用printf 7 } 8 9 /* 10 * 计算每个月的兔子总数 11 */ 12 public int Calculate(int j) { 13 if(j==1) { 14 return 1; 15 }else if(j==2) { 16 return 1; 17 }else { 18 return Calculate(j-1)+Calculate(j-2);// 递归计算 19 } 20 } 21 }
Python实现
1 # -*- coding: utf-8 -*- 2 3 def CalculateRabbit(n):#计算每个月的兔子总数 4 if n == 1: 5 return 1 6 elif n == 2: 7 return 1 8 else: 9 return CalculateRabbit(n-1) + CalculateRabbit(n-2) 10 11 if __name__ == '__main__': 12 N = 12 13 Sum = 0 14 Sum = CalculateRabbit(N) 15 print('第 %s 个月的兔子总数为: %s' % (N,Sum))
这道题主要是弄懂兔子成长规律,实现只需要递归计算即可