此代码给出了给定数字的计算阶乘的每个步骤结果,但我只想要最终的。
#include <stdio.h>
long int factorial(int n) {
if (n <= 1)
return(1);
else
n = n * factorial(n - 1);
printf("%d\n", n);
return(n);
}
main() {
int n;
printf("Enter n: ");
scanf("%d", &n);
//function call
factorial(n);
return 0;
}
答案 0 :(得分:5)
这个怎么样?
int final;
final = factorial(n);
printf("%d! = %d\n", n, final);
并停止在printf
功能中使用factorial
。
答案 1 :(得分:4)
所以不要在递归函数中使用printf
,而只在main()
内打印返回值。
答案 2 :(得分:2)
避免在递归函数中使用printf();
。
在递归函数中编写printf();
是每次都打印值。所以,只需将它放在函数之外。
像这样:
#include <stdio.h>
long int factorial(int n) {
if (n<=1)
return(1);
else
n=n*factorial(n-1);
return(n);
}
main() {
int n,f;
printf("Enter n: ");
scanf("%d",&n);
//function call
f = factorial(n);
printf("Factorial of %d is %d\n",n,f); // See the change here ....
return 0;
}
答案 3 :(得分:1)
long int factorial(int n){
if(n<=1)
return 1;
return n*factorial(n-1);
}
答案 4 :(得分:1)
使用此,
long int factorial(int n) {
if (n<=1)
return(1);
else
n=n*factorial(n-1);
//printf("%d\n",n);
return(n);
}
main(){
int n, result;
printf("Enter n: ");
scanf("%d",&n);
//function call
result=factorial(n);
printf("%d\n",result);
return 0;
}
答案 5 :(得分:0)
[此答案最初由原始海报编辑成问题,替换了错误的代码。问题已经恢复,解决方案在此社区维基回答中重新发布。]
重新编写代码,现在看起来像这样。感谢您的建议。
#include <stdio.h>
long int factorial(int n)
{
if (n<=1)
return(1);
else
n=n*factorial(n-1);
return(n);
}
int final(int n)
{
int result = factorial(n);
printf("%d! = %d\n", n, result);
return 0;
}
main()
{
int n;
printf("Enter n: ");
scanf("%d",&n);
//function call
final(n);
return 0;
}