经典的递归练习

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

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

        从第三个月开始,后一个月的兔子数量是前两个月的兔子对数之和 !典型的 “斐波那契问题”, 最常用的方法是用 “递归” 求法!

 1 public class Test {
 2     public static void main(String[] args) {
 3         int i=0;
 4         for(i=1;i<=20;i++)
 5             System.out.println("第"+i+"个月共有" + f(i)+"对兔子");
 6     }
 7     public static int f(int x)
 8     {
 9         if(x==1 || x==2)
10             return 1;
11         else
12             return f(x-1)+f(x-2);
13 
14     }
15 
16 }

 2,

喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!
什么问题?他研究的问题是蟠桃一共有多少个!
不过,到最后,他还是没能解决这个难题,呵呵^-^
当时的情况是这样的:
第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n(随机)天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?()

 

posted @ 2016-11-21 21:11  cheney-yang  阅读(354)  评论(0编辑  收藏  举报