楼梯有N级台阶,上楼可以一步上一级台阶,也可以一步上两级台阶。编一程序,计算共有多少种不同的走法。
一行,一个整数n(1 <= n <= 30),表示台阶的级数。
一个整数,走法的种数。
样例输入
3
方案1:走三次,每次一步
方案2:先走一级,再走两级
方案3:先走两级,再走一次
这是一个递推计算问题,关键是找出递推式。
参见参考链接。
(略)
尽量用函数封装功能函数。
递推问题的关键是递推式。
#include <stdio.h>
typedef unsigned long long ULL;
ULL stairs(int n)
{
ULL f1=1, f2=2, temp;
if(n == 0)
return 0;
else if(n == 1)
return 1;
else if(n == 2)
return 2;
for(int i=3; i<=n; i++) {
temp = f1 + f2;
f1 = f2;
f2 = temp;
}
return f2;
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%lld\n", stairs(n));
return 0;
}
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。