主题:C++递归函数 下楼问题
zcx_hello
[专家分:0] 发布于 2012-03-11 23:36:00
从楼上走到楼下共有h个台阶,每一步有3种走法:走1个台阶,走2个台阶,走3个台阶。问可以走出多少种方案,请用递归思想来编程实现。函数void Try(int i, int s)表示站在第i级台阶上往下试走第s步的过程。
输入描述
楼梯的台阶数
输出描述
总方案数
输入样例
4
输出样例
7
回复列表 (共1个回复)
沙发
lisy [专家分:390] 发布于 2012-04-11 00:09:00
#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
我来回复