您的位置:首页 > 大数据 > 人工智能

70. Climbing Stairs

2016-04-19 16:31 483 查看
70. Climbing Stairs

这个问题抽象出来就是求解费波拉契数列。而求解费波拉契数列一般两种方法,一种就是基于循环的,一种是基于递归的。虽然这题用递归解比较简单直观,但是当n较大的时候,程序效率非常低,结果甚至报错;所以从效率上考虑,一般建议使用循环。

基于循环:

class Solution {
public:
int climbStairs(int n) {
int result[2]={1,1};
if(n<2)
return result
;
long long f1=1;
long long f2=1;
long long f=0;
for(int i=2;i<=n;i++)
{
f=f1+f2;
f1=f2;
f2=f;
}
return f;
}
};


基于递归

class Solution {
public:
int climbStairs(int n) {
int result[2]={1,1};
if(n<2)
return result
;
return climbStairs(n-1)+climbStairs(n-2);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: