题目描述
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
题目分析
f(n) = f(n – 1) + f(n – 2)
直接递推即可
Java
public int climbStairs(int n) {
int p1 = 1, p2 = 1;
int ans = 1;
for (int i = 2; i <= n; i++) {
ans = p1 + p2;
p1 = p2;
p2 = ans;
}
return ans;
}
Kotlin
fun climbStairs(n: Int): Int {
var p1 = 1
var p2 = 1
var ans = 1
for (i in 2..n) {
ans = p1 + p2
p1 = p2
p2 = ans
}
return ans
}