回 帖 发 新 帖 刷新版面

主题:C++递归函数  下楼问题

从楼上走到楼下共有h个台阶,每一步有3种走法:走1个台阶,走2个台阶,走3个台阶。问可以走出多少种方案,请用递归思想来编程实现。函数void Try(int i, int s)表示站在第i级台阶上往下试走第s步的过程。
 
输入描述
楼梯的台阶数
 
输出描述
总方案数
 
输入样例
4
 
输出样例
7

回复列表 (共1个回复)

沙发

#include <iostream>
using namespace std;
void Try(int i,int j)
{
    cout<<i<<"-"<<j<<"   ";
    return;
}
int count=0;
void  xialou(int x)
{
    
    int i;
    if (x==1)
    {
        Try(1,1);
        cout<<endl;
        count++;
        return;
    }
    else if (x==2)
    {
        for(i=1 ;i<=2;i++)
        {
            if (i==1)
            {
                Try(2,1);
                xialou(1);
            }
            else
            {
                Try(2,2);
                cout<<endl;
                count++;
                return;
            }
        }
    }
    else if (x==3)
    {
        for(i=1 ;i<=3;i++)
        {
            if (i==1)
            {
                Try(3,1);
                xialou(2);
            }
            if (i==2)
            {
                Try(3,2);
                xialou(1);
            }
            if (i==3)
            {
                Try(3,3);
                cout<<endl;
                count++;
                return;
            }
        }


    }
    else
    {
        for(i=1 ;i<=3;i++)
        {
            if (i==1)
            {
                Try(x,1);
                xialou(x-1);
            }
            if (i==2)
            {
                Try(x,2);
                xialou(x-2);
            }
            if (i==3)
            {
                Try(x,3);
                xialou(x-3);
            }
        }


    }


}
int main()
{
    xialou(10);
    cout<<count<<endl;
    return 0;
}

新浪微博: 李思扬_pa

我来回复

您尚未登录,请登录后再回复。点此登录或注册