C语言,递归问题,求助:帮忙看一下这段代码哪里错了?为什么运行不出来?

2024-12-23 11:48:43
推荐回答(4个)
回答1:

你的代码没有实现递归。
可以参考我修改的:
# 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 ) );
}

回答2:

sum = f(n)*f(n-1);
每次都会调用f(3),所以不会返回的。

回答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

*/

回答4:

你的目的是什么?这个函数是用来求什么的?