2016-01-13 46 views
-4

如何解决此问题,使其不会产生循环?为什么它会创建一个增量而不是递减的循环?为什么此C代码创建以分段错误结束的循环

#include <stdio.h> 

int factorial(int input) 
{ 
    return input * factorial(input-1); 
} 

int main() 
{ 
    printf("%d", factorial(23)); 
    return 0; 
} 
+1

添加结束条件 –

+0

这个程序确实有一个“循环”本身。你被困在一个无限的递归调用中。你需要添加一个“基本情况”递归函数,所以最终该函数返回到调用函数 – JackVanier

+0

正如大家说的。当'input'小于1时,你想结束递归。 –

回答

6

您不必为递归基本条件以结束

更改factorial功能像

if (input == 1) 
    return 1; 
return input * factorial(input-1);