学习递归的时候,老师讲过兔子数列即斐波那契数列。有一组神奇的数字1,1,2,3,5,8,13,21,34。。。。。。

老师带我们找到临界值,然后开启递归计算。第一个月有一对小兔子;第二个月小兔子长大了,但还是1对兔子;第三个月这一对长大的兔子可以繁殖,生下了一对小兔子。第四个月依次类推,如图所示,小代表小兔子,大代表大兔子:

【抽象】青蛙跳台阶问题_java

从结论去推过程貌似更容易一些,当n等于1或等于2的时候只有一对兔子,用函数表示f(n)=1,n∈[1,2],n为正整数;当n大于2的时候,f(n)=f(n-1)+f(n-2),等于前两天兔子对数(有几对兔子)相加。

前几日小同事问我青蛙条台阶的问题,有一只青蛙要跳上n阶的台阶,青蛙每次可以跳1阶也可以每次跳2阶,问跳上n阶台阶青蛙有多少中跳法?

这种问题其实就是一个抽象化过程,先来看下只有一个台阶的时候,青蛙只有一次跳1阶这一种跳法;当有两阶台阶的时候,青蛙可以选择一次跳2阶,也可以一次跳1阶,这时候有两种跳法;当台阶大于2时,其实青蛙面临的选择并不多,一次跳1阶,剩下的台阶跳法为f(n-1),一次跳2阶,剩下的台阶跳法为f(n-2),左看右看还是一个斐波那契数列。