C中的阶乘递归(分段故障)

时间:2018-12-29 08:21:58

标签: c recursion segmentation-fault factorial

大家好,我是新手程序员,我的递归代码在计算数字阶乘时遇到问题。

我遇到了细分错误,我不知道为什么会这样。

任何帮助将不胜感激:)

(例如,在我的代码中,我试图计算4的阶乘)

#include <stdio.h>

int factorial(int i) {
    int result = i * factorial(i - 1);
    return result;
}

int main()
{   
    int result = factorial(4);
    printf("result is %d", result);
}   

1 个答案:

答案 0 :(得分:7)

问题是,您缺少基本条件。因此,您的函数将一直运行,直到它使用了程序的所有可用内存,最后放弃了给出分段错误的错误。

在编写递归函数时,您始终必须提供一个基本条件,该条件将停止递归。您的情况将是

if(i == 0)
    return 1;

在这里,您基本上是说我变为0时停止递归。