C语言,错在哪里了?如何改
C语言,错在哪里了?怎么改?
#include <stdio.h> int main() { long i = 50; long m; m = fac(i); printf("%ld",m); getch(); return 0; } long fac(long n) { int a,b,c; if(n == 0) { return 1; } else { a = n-1; b = fac(n); c = b*a; return (c); } }
------解决思路----------------------
程序停不下来吧。
递归不会结束。
在 fac(long n) 里,调用 b=fac(n)。终止不了。
可能是你笔误吧,想写 b=fac(n-1),是这样吗?
------解决思路----------------------
main后面的函数要在main前面声明一下啊
楼主你倒是简单整理一下代码啊,就这么上传了??
------解决思路----------------------
竟供参考!!!
#include <stdio.h> int main() { long i = 50; long m; m = fac(i); printf("%ld",m); getch(); return 0; } long fac(long n) { int a,b,c; if(n == 0) { return 1; } else { a = n-1; b = fac(n); c = b*a; return (c); } }
------解决思路----------------------
程序停不下来吧。
递归不会结束。
在 fac(long n) 里,调用 b=fac(n)。终止不了。
可能是你笔误吧,想写 b=fac(n-1),是这样吗?
------解决思路----------------------
main后面的函数要在main前面声明一下啊
#include <stdio.h>
long fac(long n);////////////
int main() {
long i = 50;
long m;
m = fac(i);
printf("%ld",m);
getch();
return 0;
}
long fac(long n) {
int a,b,c;
if(n == 0) {
return 1;
}
else {
a = n-1;
b = fac(n);
c = b*a;
return (c);
}
}
楼主你倒是简单整理一下代码啊,就这么上传了??
------解决思路----------------------
#include <stdio.h>
long fac(long n)
{
int a,b,c;
if(n <= 1)
{
return 1;
}
a = n;
b = fac(n-1);
c = b*a;
return (c);
}
int main()
{
long i = 10; // 50 的阶乘太大了。。
long m;
m = fac(i);
printf("%ld",m);
getchar();
return 0;
}
竟供参考!!!