#include <stdio.h>
prod();
main()
{int n=0;
scanf("%d",&n);
printf("%d",prod(n));
}
prod(int c)
{ int y;
if (c<1) return (1);
y=c*prod(--c);
return y;
}
如果是if (c<1), y=c*prod(--c);那么这个嵌套最后当C=1时,--C为0,所以结果都是0啦,
另外y=c*prod(--c);()的优先级最高,先计算,那么C的值实际上已经被减了1。
#include <stdio.h>
int prod(int c);
main()
{int n=0;
scanf("%d",&n);
printf("%d",prod(n));
}
int prod(int c)
{ int y;
if (c<=1) return (1);
y=(c+1)*prod(--c);
return y;
}
这样应该可以。
我觉得你的方法行不通,(c+1)是c的下一个数,而--c是c的上一个数,而c的值的未用到。