我想在c.what以下程序的错误中使用递归函数找到给定数字的阶乘?

时间:2010-12-06 18:04:08

标签: c function recursion

#include<stdio.h>

int fact(int i);
void main()
{
    int j;

    j=fact(4);

    printf("%d",j);
}

int fact(int i){
    int x=i;static int tot=1;

    if(x<1){
        tot=x*fact(x-1);
    }

    return tot;
}

请帮我这个代码。这段代码有什么问题?

4 个答案:

答案 0 :(得分:3)

事实功能中没有基本条件。

您需要检查:

 if(i == 1){
    return 1;
 }else{

   return i * fact(i - 1);

}

答案 1 :(得分:3)

if(x<1)

您确定不是x > 1吗?

另外,我会在你的static声明中删除tot。这类似于全局变量处理tot。你不需要那个。由于tot总是在阅读前分配,因此它看起来似乎没有害处,但一般来说它看起来像是一面红旗。

答案 2 :(得分:1)

你在if语句中错误打印,它应该是

if(x > 1) {
   tot=x*fact(x-1);
}

编辑:tot也必须是非静态的。

答案 3 :(得分:1)

您不希望static声明中出现tot