题目描述
有10个台阶,你可以走1步,2 步或者3步,问一共有几种走法
问题分析
细细想想,如果用f(n)表示那个台阶的走法数,那么f(n) = f(n - 1) + f(n - 2) + f(n - 3),而f(0) = 1, f(1) = 1, f(2) = 2。至于实现,可以用递归,也可以循环实现。
其实,这也是求树的叶子节点的问题。
附上一段代码
#include#include using namespace std;#define N 100int fun(int n){ //initialzing int f[N] = { 1, 1, 2}; for (int i = 3; i <= n; i++) //core code f[i] = f[i - 1] + f[i - 2] + f[i - 3]; return f[n];}int main(){ int n, result; while(scanf("%d", &n) != EOF) { result = fun(n); printf("result = %d\n", result); } system("pause"); return 0;}