想实现3的阶乘计算,却运行不出来,代码如下,出现了什么错误呢?
#include <stdio.h>long recursion(int n);
void main()
{
int a = 3;
int result;
result =recursion(a);
printf("%d\n",result);
}
long recursion(int n)
{
long temp_result;
if(n>1)
{
temp_result=recursion(n-1)*n;
}
return temp_result;
}
temp_result未初始化 没有终止条件,当n==1时应该结束,可以改成:
long recursion(int n){
return (n>1)?(recursion(n-1)*n):1;
} 上面两位哥各说了一条问题,都改了就对了 int recursion(int n)
{
int temp_result;
if (n>1)
{
temp_result = n*recursion(n-1);
}
else
{
temp_result = 1;
}
return temp_result;
}
核心函数应该为这样的,就可以正常显示结果了。
页:
[1]