经典的递归练习
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(随机)天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?()