题目描述
有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 <stdio.h> #include <iostream> using namespace std; #define N 100 int 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; }