【问题描述】
楼梯有n(71>n>0)阶台阶,上楼时可以一步上1阶,也可以一步上2阶,也可以一步上3阶,编程计算共有多少种不同的走法。
【输入】
输入的每一行包括一组测试数据,即为台阶数n。最后一行为0,表示测试结束。
【输出】
每一行输出对应一行输入的结果,即为走法的数目。
【输入样例】
1
2
3
4
0
【输出样例】
1
2
4
7
【参考程序】
#include <cstdio>
#include <iostream>
using namespace std;
long long a, f[71]; // a[i]表示上i阶台阶不同的走法("训练指导教程"P239源码是int,需要改为long long)
int main() {
f[1] = 1;
f[2] = 2;
f[3] = 4; // 上4阶台阶共有4种方法
for (int i=4; i<=70; i++) {
f[i] = f[i-1] + f[i-2] + f[i-3]; // 加法原理(一步上1阶,剩余i-1阶有f[i-1]种不同走法,加上一步上2阶,剩余i-2阶有f[i-2]种不同走法,加上一步上3阶,剩余i-3阶有f[i-3]种不同走法)
}
while (true) {
cin >> a;
if (a == 0) {
break;
} else {
cout << f[a] << endl;
}
}
return 0;
}