走楼梯 递归

描述
楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可以一步上2阶,也可以一步上3阶,编程计算共有多少种不同的走法。

输入
输入的每一行包括一组测试数据,即为台阶数n。最后一行为0,表示测试结束。
输出
每一行输出对应一行输入的结果,即为走法的数目。
样例输入
1
2
3
4
0
样例输出
1
2
4
7

解析:类似于斐波那契数列的递归做法。关键在于找到其递归规则。

  如果是1阶楼梯,共有1种走法。

  如果是两阶楼梯,共有 1 1、2两种走法。

  如果是3阶楼梯,共有111、12、21、3这4种走法。

  如果是4阶楼梯,可以从1阶直接上到4阶或者从2阶上到4阶或者从3阶上到4阶,共有f(1)+f(2)+f(3)种走法。

  若是5阶楼梯,可分别从2阶、3阶、4阶直接上到5阶,共f(2)+f(3)+f(4)中走法。

  ……

  所以我们得到以下递归序列:  f(n) = f(n-1) + f(n-2) + f(n-3);

//Geeksun 2018.1.13
#include 
#include 
int function(int step);

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        if(n == 0)
        {
            break;
        }
        printf("%d\n",function(n));
    }
    return 0;
}
int function(int step)
{
    if(step == 1)
    {
        return 1;
    }
    else if(step == 2)
    {
        return 2;
    }
    else if(step == 3)
    {
        return 4;
    }
    else
    {
        return function(step - 1) + function(step - 2) +function(step - 3);
    }
}




你可能感兴趣的:(ACM)