Python和Java编程题(二)

题目:古典问题:有一对兔子,从出生后第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))

 

这道题主要是弄懂兔子成长规律,实现只需要递归计算即可

posted @ 2018-09-19 22:17  埃克斯诶尔  阅读(237)  评论(0编辑  收藏  举报