题干
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
知识点:递归
我的思路
看了是递归的提示。但是实在没思路。代码没写出。
大佬解析
代码:
总结:用递归的思路比较好理解,跳到第n个台阶最后一步只有两种可能,第一,从第n-1跳一级。第二,从n-2跳2级。也就是说f(n) = f(n-1) + f(n-2)。解析写的我觉得不是很好理解。对于递归来说,你要知道最起码的递推公式的前n项才可以用递归。还要抽象出递推公式,就像跳台阶问题:f(n) = f(n-1) + f(n-2),想要跳到n阶,最后一步可能跳1步也可能跳两步,也就是说算出来跳到n-1阶和跳到n-2阶的跳法,加起来就是n阶的。然后求出前两阶n=1,2时的跳法。就可以用递归了。
递归问题往往可以转化为循环问题。怎么说呢,递归在算法里面不是一种好的选项。尽量通过拆解转换成循环问题。递归为啥不好呢?因为递归往往意味着耗时,不可掌控。能不用就不用。
时间的维度:递归418ms,迭代只用30ms以内。