java经典问题,兔子有多少?

 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月

又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

  
程序分析:

兔子的规律为数列

1,1,2,3,5,8,13,21.... 
 
===================================
源码两天后共享在【i码邦】编程中,大家可以直接下载后编译、运行!
 


--来自网页客户端
已邀请:

紫云

赞同来自: RRCX 王霸之业 admin

提个建议,因为本人学习C语言的时候喜欢一点点的去进行搜索,直到明白为止,我希望你们能够把你们的教程弄得生动形象一点,用生活中常见的东西把它们连接起来,比如把学Java比作建一栋房子,这个变量相当于一栋房子的什么,又比如print就像人说话一样,这样的话更容易产生联想,更容易记住,也更有趣,网上教程有很多但都是千篇一律,很枯燥,当然你们这里也是比较好的了,收到请回答

--来自移动客户端

施帅帅

赞同来自: admin 反派7961F1FA

image.png


希望能帮到你

--来自移动客户端

风继续吹

赞同来自: admin

image.png


--来自移动客户端

admin

赞同来自:

本题源码已经分享到i码邦源码分享中,欢迎大家下载。
 
另:初学者最好自己一个字母一个字母敲代码完成,这样在敲代码的过程中能够加深理解。
 
扩展问题:如果兔子的生命是6个月,那么第一年每个月应该有多少个兔子?

--来自网页客户端

admin

赞同来自:

由题目最后提示的规律可以得出:
除了1、2两个月,从第三个月开始,第三个月的兔子数量是前两个月兔子数量的总和。

值得注意,该题目不严谨,没有给出具体的月数,实际中不可能么有限制的输出,因此自己可以根据情况设置合适的月数,比如10个月,15个月,主要是解决方法。
 
分析源码:public class tutu{
  public static void main(String args){
    int i=0;
    for(i=1;i<=20;i++)
      System.out.println(tf(i));
  }
  public static int tf(int x){
    if(x==1 || x==2)
      return 1;
    else 
      return tf(x-1)+tf(x-2);
  }
}

在该源码中,首先是一个tutu的类,该类中有一个main主方法,用于控制台输出,还有一个tf方法,返回的是某月兔子的数量。

tf方法中用到了递归调用,就是自己调用自己。



在main主程序中,for循环实现,月数从1开始,到第20个月,打印兔子数量。

当月数是1和2的时候,方法tf返回的都是1,因此打印出来也是1。

当月数为3的时候,就开始进行递归调用,返回前两月之和。
 
 
-------------------------------

i码邦推荐知识点
 

在使用递归调用的时候,应该声明一个操作的终结点。但是采用递归调用的时候会增加内存负担,因为每调用一次方法都要新开辟一段栈空间,直到该方法调用结束才释放。通常意义上递归会有结束条件。所谓结束条件就是告诉程序以及到达本次递归的最底层了,不必继续运行的条件。递归至少要包括一个结束条件,而且要确保程序能最终能到达某一个结束条件。不然的话,你的递归程序会因栈空间不足而中止。


--来自网页客户端

要回复问题请先登录注册

Template error, template file not found