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

  1. /*

  2. 2017年2月15日13:32:10

  3. java基础50道经典练习题 例1

  4. Author: ZJY

  5. Purpose: 菲波拉契数列应用

  6. 【程序1】

  7. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,

  8. 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,

  9. 问每个月的兔子对数为多少?

  10. 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

  11.  
  12. */

  13. import java.util.Scanner;

  14.  
  15. public class ProgramNO1

  16. {

  17.  
  18. /* 方法一: 递归

  19. public static void main(String[] args) {

  20. int n = 5;

  21.  
  22. System.out.println("第" + n + "个月,兔子的总数为" + fun(n));

  23.  
  24. }

  25. private static int fun(int n) {

  26. if((1 == n)||(2 == n))

  27. return 1;

  28. else

  29. return (fun(n-1) + fun(n-2));

  30. }*/

  31.  
  32. /* 方法二: 循环

  33. public static void main(String[] args) {

  34. int number = 1, month;

  35. int tmp1 = 1, tmp2 = 1;

  36.  
  37. Scanner sc = new Scanner(System.in);

  38. System.out.print("请输入第几个月:");

  39. month = sc.nextInt();

  40.  
  41. for (int i=1; i<=month; i++) {

  42. if(2 >= i)

  43. number = 1;

  44. else {

  45. number = tmp1 + tmp2;

  46.  
  47. tmp2 = tmp1; //第二个月

  48. tmp1 = number; //第一个月

  49. }

  50. }

  51. System.out.println("第" + month + "个月,兔子的总数为:" + number);

  52. }

  53. */

  54. public static void main(String[] args) {

  55. Scanner sc = new Scanner(System.in);

  56. System.out.print("请输入第几个月:");

  57. int month = sc.nextInt();

  58. System.out.println("第" + month + "个月,兔子的总数为:" + fun(month));

  59. }

  60. private static int fun(int month) {

  61. if((1 == month)||(2 == month))

  62. return 1;

  63. else

  64. return (fun(month-1) + fun(month-2));

  65. }

  66. }

  67.  

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 题目古典问题:有一对兔子,从出生后第3个每个一对兔子小兔子长到第三个每个一对兔子,假如兔子都不每个兔子对数为多少? 这是一个著名的数学题目——斐波那契数列。每个兔子对数可以按照斐波那契数列进行计算,即每个兔子对数等于前两个兔子对数之和。如果假设第一个一对兔子,则第二个也为一对兔子第三个为两对兔子,第四个为三对兔子,以此类推。 ### 回答2: 这个问题的答案其实是一个经典的数列问题,被称为“斐波那契数列”,因为这个数列的发现者Fibonacci被誉为欧洲中世纪最伟大的数学家之一。 解决这个问题需要用到递归和数列知识。假设第n个有 f(n) 对兔子,那么根据题意,每个兔子对数会按照斐波那契数列增加,公式为: f(n) = f(n-1) + f(n-2) 初始条件为 f(1)=1,f(2)=1。因为第一个只有一对兔子,第二个也只有一对,从第三个开始才会有繁殖。 那么我们就可以用这个公式递归地求出每个兔子对数了: 第一个有1对兔子; 第二个有1对兔子第三个有 f(3) = f(2) + f(1) = 2 对兔子; 第四个有 f(4) = f(3) + f(2) = 3 对兔子; 第五个有 f(5) = f(4) + f(3) = 5 对兔子; 第六个有 f(6) = f(5) + f(4) = 8 对兔子; 以此类推,我们可以求出每个兔子对数。 需要注意的是,这个递归公式只有在兔子的情况下才成立。如果加入了兔子亡的情况,就需要考虑新兔子数量和老年兔子数量的比例了,问题就更加复杂了。 ### 回答3: 这一问题被称为“兔子问题”,是一道经典的数学问题。我们可以通过找规律的方式来求解。 首先,我们假设第一个一对兔子(也就是出生的那对兔子)。在第二个,这对兔子还没有育,因此仍旧只有一对。但是,从第三个开始,我们就会得到新一对兔子,那么兔子对数就变成了两对(之前的那一对加上新一对)。 到了第四个,这两对兔子中的第一对已经长大,也需要开始育,因此又可以得到新一对兔子。同时,第二对兔子也会育新兔子。这个时候,兔子对数就变成了三对。 我们可以发现,每当有一对兔子长到第三个,就会产下一对兔子。因为每对兔子都需要三个的时间才可以育。因此,我们可以得出一个公式:每个兔子对数等于上个兔子对数加上新兔子对数。 通过这个公式,我们可以列出每个兔子对数如下: 第1个:1对 第2个:1对 第3个:2对(1+1) 第4个:3对(1+2) 第5个:5对(2+3) 第6个:8对(3+5) 第7个:13对(5+8) 第8个:21对(8+13) 以此类推。 因此,我们可以得出结论:每个兔子对数等于斐波那契数列中对应位置的数值。斐波那契数列是一个序列,其中每个数都是前两个数的和。也就是说,第n个数等于第n-1个数和第n-2个数的和。前几个斐波那契数列的数值为:1、1、2、3、5、8、13、21...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值