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>
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;  



竟供参考!!!