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

70. Climbing Stairs (Easy)

2016-11-10 10:10 281 查看
You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways

can you climb to the top?

爬楼梯问题,爬到第n层的可能是:从第n-1层爬到第n层(一步),或者从第n-2层爬到第n层(两步)。所以计算公式为:f(n) = f(n-1) + f(n-2),其实就是斐波拉契数列。

Solutions:

C:

方法一:递归。效率比较低,但代码简单且容易理解。

int climbStairs(int n) {
if(n == 0 || n == 1) {
return 1;
}
if(n == 2) {
return 2;
}
return climbStairs(n - 1) + climbStairs(n - 2);
}


方法二:不用递归,每计算一步都保存该步的结果:

int climbStairs(int n) {
if(n == 0 || n == 1) {
return 1;
}
if(n == 2) {
return 2;
}
int a = 1;
int b = 2;
int c;
for(int i = 3; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode