【发布时间】:2016-12-10 02:43:06
【问题描述】:
我正在尝试使用递归计算阶乘,但我的程序返回错误值。我无法理解递归功能。请帮助我理解递归是如何工作的。我的代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
//code
int T,N,sol;
scanf("%d\n",&T);
while(T--) {
scanf("%d\n",&N);
sol=fact(N);
printf("%d\n",sol);
}
return 0;
}
int fact(int n)
{
int value;
while(n>0) {
value=n*fact(n-1);
n=n-1;
}
return value;
}
【问题讨论】:
-
因为你的功能设置错误
-
在使用之前初始化
value。加上功能也错了。 -
n == 0时返回的值是多少? -
当使用递归时,设置一个终止情况,或递归结束的基本情况。然后使用不同的参数值设置递归继续的一般情况。
-
循环也很奇怪。迭代或递归,但不要两者都做。