大家好,我是新手程序员,我的递归代码在计算数字阶乘时遇到问题。
我遇到了细分错误,我不知道为什么会这样。
任何帮助将不胜感激:)
(例如,在我的代码中,我试图计算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);
}
答案 0 :(得分:7)
问题是,您缺少基本条件。因此,您的函数将一直运行,直到它使用了程序的所有可用内存,最后放弃了给出分段错误的错误。
在编写递归函数时,您始终必须提供一个基本条件,该条件将停止递归。您的情况将是
if(i == 0)
return 1;
在这里,您基本上是说我变为0时停止递归。