你的代码没有实现递归。
可以参考我修改的:
# include
int f( int n ) //计算整数的阶乘
{
int sum;
if( n == 1 )
{
sum = 1;
}
else
{
sum = n * f( n - 1 ); //递归,调用自身
}
return sum;
}
main ()
{
int n = 3;
printf( "%d! = %d\n", n, f( n ) );
}
sum = f(n)*f(n-1);
每次都会调用f(3),所以不会返回的。
# include
int f(int n)
{
int sum;
if (n == 1)
{
return 1;
}
else
{
sum = n * f(n-1);
printf("f(%d)*f(%d) = %d\n", n, n-1 , sum);
return sum;
}
}
void main()
{
int x = f(3);
printf("x = %d\n", x);
}
/*
运行结果:
f(2)*f(1) = 2
f(3)*f(2) = 6
x = 6
Press any key to continue
*/
你的目的是什么?这个函数是用来求什么的?