我想练习递归。这是我的代码
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).
出了什么问题?
答案 0 :(得分:0)
首先不要将指针传递给递归函数。但如果你坚持使用指针(可能是硬件)修改你的函数:
long int factorial(int *fact)
{
if (*fact == 0)
return 1;
else
{
(*fact)--;
return (*fact+1) * factorial(fact);
}
}