小明特别喜欢爬楼梯,他有的时候一次爬一个台阶,有的时候一次爬两个台阶,有的时候一次爬三个台阶。如果这个楼梯有n个台阶,小明一共有多少种爬法呢?
c语言初学者 完全没有想到递归 因为之前做过一个搬砖的问题 所以我就又用了一个三元一次方程和有重复元素的排列去解
#include
int A(int);
int main(void)
{
int n, x, y, z, i;
scanf_s("%d",&n);
for (x = i = 0; x <= n; x++)//先外循环把x定下来 变成二元方程 然后内循环变y 把所有符合的z筛选出来
{
for (y = 0; y <= n-x; y++)
{
if ((n - x - 2 * y) % 3 == 0&&(n - x - 2 * y)>=0)
{
z = (n - x - 2 * y) / 3;
printf("x=%d,y=%d,z=%d\n", x, y, z);
i = i+(A(x + y + z) / (A(x) * A(y) * A(z)));//用了一个有重复元素的排列
}
}
}
printf("%d", i);
return 0;
}
int A(int n)
{
int i, j;
for (i = 0, j = 1; i < n; i++)
j = j * (i + 1);
return j;
}
能不能不不使用递归 把我这种修正一下 还是或者说我这种方法就是错误的?
没人吗没人吗