跳台阶引起的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写的:
就是把数据列举出来,然后求最后两位的和。。。但是速度为啥比递归快?
后来百度到母函数递归方法的时间复杂度(http://www.cnblogs.com/python27/archive/2011/12/09/2282486.html):
呈指数增长,那就没有O(n)的速度快了。看来是原来学递归一直没注意时间复杂度,以后注意点。
作者小白,有错误的地方,望大神指出。谢谢!