#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;
}
#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;
}
这样应该可以。
谢谢啦,果然是高手亚!
如果是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的值的未用到。
#include <stdio.h>
int prod(int c);
main()
{int n=0;
scanf("%d",&n);
printf("%d",prod(n));
}
int prod(int c)
{ int y;
while((--c)!=0 && c>=1)
{y=c*prod(--c);
return y;
}
return 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);
c--;
y=(c+1)*prod(c);
return y;
}
//建议楼主以后声明函数时最好不要省略声明类型
//递归的时候先是回归,然后再递推,只要得到了一个确切的值它就会递推,所以不必考虑负数的情况