有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
实现思想如下:
M=2时,走法X1=1;
M=3时,走法X2=2;
M=4时,走法X3=3;
M=5时,走法X4=5;
依次类推
M=n时,走法Xn-1=Xn-2+Xn-3,是前两项的和
所以可以用递归的思想来实现。
具体代码如下:
#include<stdio.h>
int test1(int m) //test1()递归函数实现求总共有几种方法
{
int x1 = 0, x2 = 0;
int S;
if (m == 2)
x1 = 1;
else if (m == 3)
x2 = 2;
else if (m > 3) //m>3时可以用递归的方法来实现
{
x1 = x1 + test1(m - 2);
x2 = x2 + test1(m - 1);
}
S = x1 + x2;
return S;
}
void test(int m[], int n) //test()函数输出有几种做法
{
int i = 0;
int sum = 0;
for (i = 0; i < n; i++)
{
sum = test1(m[i]); //调用test1()函数
printf("%d\n", sum);
}
}
int main()
{
int n, i, m[100] = { 0 };
scanf("%d", &n); //输入n要处理的总数
for (i = 0; i < n; i++) //输入n组数表示阶梯数
scanf("%d", &m[i]);
test(m, n); //调用test()函数
return 0;
}