溢出错误

时间:2016-03-18 18:26:12

标签: c++

我想练习递归。这是我的代码

long int factorial(int *fact);
/*..
..*/
case '6':
        int fact;
        std::cin >> fact;
        std::cout << factorial(&fact);
        break;
/*...
...*/
long int factorial(int *fact) {
if (*fact == 0)
    return 1;
else
    return *fact * factorial(fact - 1);
}

我有错误

Unhandled exception at 0x01362789 in kalkulator.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x00092FF0).

出了什么问题?

1 个答案:

答案 0 :(得分:0)

首先不要将指针传递给递归函数。但如果你坚持使用指针(可能是硬件)修改你的函数:

 long int factorial(int *fact) 
{
if (*fact == 0)
    return 1;
else
 {
    (*fact)--;
    return (*fact+1) * factorial(fact);
 }
}