问题是这样的:假设有n阶楼梯,人爬上去的话一次只能爬一阶或两阶楼梯,问n阶楼梯有几种爬法。(据说是爱因斯坦没事的时候想的问题,你说这些个伟人,自己平常钻研的东西那么难,像我这种人一个公式都要理解很久,偏偏还没事瞎琢磨,留问题来为难我真是好难过)。
好的,如题所说,要使用递归函数,那么首先我们得把递归函数的表达式写出来。分析如下:当n = 1时,只用一种爬法,即 f = 1 ;当n = 2时,可以一次一个台阶爬上去,也可以一次爬俩台阶,所以 f = 2; n = 3时,1)一阶一阶爬上去;2)先爬俩在爬一;3)先爬一再爬俩,即f = 3......当 n = n时,我们不妨这样想,他要爬n阶要不是从n - 1阶爬过来的要不然就是从n - 2阶爬过来的,即有f(n) = f(n-1) + f(n-2)。
到这里,很明显就是一个斐波那契函数,实现也就很简单了,而在写下这个问题的代码之前我已经实现了斐波那契函数,明明一样的实现我在写下该问题相关的代码时却死活实现不了,我还把两个代码放一起对比都没有发现错误,浪费了很多时间。以下分别为两个问题的代码:
1:斐波那契数列: