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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 柳超 中级黑马   /  2014-8-7 21:04  /  2125 人查看  /  10 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
  1. public class Prog1{
  2.         public static void main(String[] args){
  3.                 int n = 10;
  4.                 System.out.println("第"+n+"个月兔子总数为"+fun(n));
  5.         }
  6.         private static int fun(int n){
  7.                 if(n==1 || n==2)
  8.                    return 1;
  9.                 else
  10.                    return fun(n-1)+fun(n-2);
  11.         }
  12. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 答案别直接贴出来啊,要不怎么给你们送分.

查看全部评分

10 个回复

倒序浏览
递归算法
回复 使用道具 举报
请问你这是用什么软件输出的?Eclipse?
回复 使用道具 举报
前十个月的数量:
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr = new int[10];
  6.                 arr[0] = 1;
  7.                 arr[1] = 1;
  8.                 sop(arr[0]);
  9.                 sop(arr[1]);
  10.                 for(int i=1; i<arr.length-1; i++)
  11.                 {
  12.                         arr[i+1] = arr[i] + arr[i-1];
  13.                                 sop(arr[i+1]);
  14.                 }
  15.         }
  16.         public static void sop(Object obj)
  17.         {
  18.                 System.out.println(obj);
  19.         }
  20. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1

查看全部评分

回复 使用道具 举报
楼主,你这是写的答案?还是在问怎么做?
回复 使用道具 举报
对 递归算法
回复 使用道具 举报
递归算法
回复 使用道具 举报
liqi 中级黑马 2014-8-8 11:41:52
8#
做了一遍
回复 使用道具 举报
  1. package com.test;
  2. /**
  3. * 楼上给出的答案都是找规律出来的,要是题目不是3个月大生第一对,而是半年呢?
  4. * 所以找规律还是有缺陷,应该按实际怎么生就怎么算。
  5. * @author Administrator
  6. *
  7. */
  8. public class TwoNumberTest
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.             for(int i =1 ; i<=20;i++)
  13.             {
  14.                     //+1是因为最开始的那对兔子没有算上
  15.                     System.out.println(count(i) + 1);
  16.             }
  17.         }
  18.         public static int count(int time)
  19.         {
  20.                 //兔子的对数
  21.                 int num = 0;
  22.                
  23.        for(int i = 2;i<time;i++)
  24.        {
  25.               //两个月后,每个月新生一对兔子
  26.               num ++;
  27.               //新生一对兔子的后代
  28.               num = num +count(time - i);
  29.        }
  30.        return num;
  31.         }
  32. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 赞一个!

查看全部评分

回复 使用道具 举报

。。还有    网络不好  只发了两个      明天再发  
直接5个题长度上限了
回复 使用道具 举报
席杰 发表于 2014-8-8 09:32
楼主,你这是写的答案?还是在问怎么做?

几个题 给大家分享下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马