美文网首页
2018-05-08

2018-05-08

作者: coo1wind | 来源:发表于2018-05-08 16:31 被阅读0次

    跳台阶引起的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)的速度快了。看来是原来学递归一直没注意时间复杂度,以后注意点。

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

    相关文章

      网友评论

          本文标题:2018-05-08

          本文链接:https://www.haomeiwen.com/subject/vvhwrftx.html