A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

10 个回复

倒序浏览
和裴波那契数列一样    当前项是前两项的和   第一二项为1
回复 使用道具 举报

  1. 这个是循环打印每个月的,如果要20,就不要循环,直接传个20过去
  2. 1.程序分析:   兔子的规律为数列1,1,2,3,5,8,13,21....  
  3. public class exp2{
  4.         public static void main(String args[]){
  5.                 int i=0;
  6.                 for(i=1;i<=20;i++)
  7.                         System.out.println(f(i));
  8.         }
  9.         public static int f(int x)
  10.         {
  11.                 if(x==1 || x==2)
  12.                         return 1;
  13.                 else
  14.                         return f(x-1)+f(x-2);
  15.         }
  16. }

  17. public class exp2{
  18.         public static void main(String args[]){
  19.                 int i=0;
  20.                 math mymath = new math();
  21.                 for(i=1;i<=20;i++)
  22.                         System.out.println(mymath.f(i));
  23.         }

  24. }
  25. class math
  26. {
  27.         public int f(int x)
  28.         {
  29.                 if(x==1 || x==2)
  30.                         return 1;
  31.                 else
  32.                         return f(x-1)+f(x-2);
  33.         }
  34. }
复制代码

回复 使用道具 举报
楼上正解
回复 使用道具 举报
这是 哪段视频阶段的题哦
回复 使用道具 举报
lhtwm1 发表于 2014-8-23 21:27
这是 哪段视频阶段的题哦

没看视频,不知道视频上有木有
回复 使用道具 举报
谢谢大家解答,感激不尽啊
回复 使用道具 举报
月份    兔子对数
1            1
2            1
3            2
4            3
5            5
6            8
7            13
  1. /*
  2. 思想:
  3.         从第2个月开始,上一个月是可产仔数量,本月是已有数量。
  4.         下月 = 本月 + 上月
  5. */
  6. class Fibonacci
  7. {
  8.         public int getFibonacci(int month)
  9.         {
  10.                 int f1,f2;
  11.                 f1=0;
  12.                 f2=1;
  13.                 if(month <= 0)
  14.                 {
  15.                         System.out.println("input error");
  16.                         return -1;
  17.                 }
  18.                 //因为已经设置第1个月,f2=1,故month=1无需运行for
  19.                 for(int x=1;x<month;x++)
  20.                 {
  21.                         f1 = f1 + f2;
  22.                         //交换结束后,始终保持f1为上月,f2为本月
  23.                         f1^=f2;
  24.                         f2^=f1;
  25.                         f1^=f2;
  26.                 }
  27.                 return f2;

  28.         }
  29. }
  30. class FibonacciDemo
  31. {
  32.         public static void main(String[] args)
  33.         {
  34.                 int num;
  35.                 num = new Fibonacci().getFibonacci(7);
  36.                 System.out.println("num = "+num);
  37.         }
  38. }
复制代码

其实很简单,LZ只要记住这个公式就OK了:
下月 = 本月 + 上月
回复 使用道具 举报
sunny~ 中级黑马 2014-8-23 23:04:20
9#
斐波拉契序列    一模一样的
回复 使用道具 举报
MeryStyle 来自手机 中级黑马 2014-8-23 23:15:22
10#
前两个月都是一对兔子,从第三个月开始,每个月兔子的对数都是之前相近两个月兔子对数的和。变样的斐波拉契数列,思路就是这样!
回复 使用道具 举报
感受到了大家的热情
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马