K12教育赛事综合服务平台
聚乐之家官方网站
下载聚乐之家官方App
专注青少年竞赛题库网站
爬楼梯问题描述:楼梯共有n级台阶,每次可以选择爬1级或2级台阶,求爬到第n级台阶的总共有多少种不同的爬法。已知该问题的边界条件为:当n=1时只有1种爬法,n=2时有2种爬法;递推关系式为:当n≥3时,f(n) = f(n-1) + f(n-2)。以下四个C++代码片段均实现了该问题的递推求解,其中正确的是?
int climbStairs(int n) { if(n <= 0) return 0; if(n == 1) return 1; if(n == 2) return 2; int prev1 = 2, prev2 = 1, curr; for(int i = 3; i <= n; ++i) { curr = prev1 + prev2; prev2 = prev1; prev1 = curr; } return curr; }
int climbStairs(int n) { if(n <= 0) return 0; if(n == 1) return 2; if(n == 2) return 1; int prev1 = 1, prev2 = 2, curr; for(int i = 3; i <= n; ++i) { curr = prev1 + prev2; prev2 = prev1; prev1 = curr; } return curr; }
int climbStairs(int n) { if(n <= 0) return 0; if(n == 1) return 1; if(n == 2) return 2; int prev1 = 2, prev2 = 1, curr; for(int i = 3; i <= n; ++i) { curr = prev1 + 1; prev2 = prev1; prev1 = curr; } return curr; }
int climbStairs(int n) { if(n <= 0) return 0; if(n == 1) return 1; if(n == 2) return 2; int prev1 = 2, prev2 = 1, curr; for(int i = 3; i <= n; ++i) { curr = prev1 + prev2; prev1 = prev2; prev2 = curr; } return curr; }