2018-05-08

2018-05-08  本文已影响0人  coo1wind

跳台阶引起的for循环和递归地比较思考

lintcode上面的一个题目:

描述

假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

您在真实的面试中是否遇到过这个题?

样例

比如n=3,1+1+1=1+2=2+1=3,共有3种不同的方法

返回 3

这题不难,就是个为斐波纳契数,f(n)=f(n-1)+f(n-2)

那我直接拿递归来写:

递归写法

看上去好简单,好简洁,测试没问题,提交。结果:

错误提示

输入39的时候,时间超时,太没耐心了。。。看了下人家的代码,竟然是for写的:

for循环

就是把数据列举出来,然后求最后两位的和。。。但是速度为啥比递归快?

后来百度到母函数递归方法的时间复杂度(http://www.cnblogs.com/python27/archive/2011/12/09/2282486.html):

母函数递归方法的时间复杂度

呈指数增长,那就没有O(n)的速度快了。看来是原来学递归一直没注意时间复杂度,以后注意点。

作者小白,有错误的地方,望大神指出。谢谢!

上一篇下一篇

猜你喜欢

热点阅读