我正在尝试将扩展添加到斐波那契数字以考虑负指数。扩展名是 Fib(-n) = (-n)^(n+1) * Fib(n) 我试图在 c++ 中实现它,但我遇到了一个问题,我不知道如何解决它。
#include <iostream>
#include <math.h>
int fib(int n) {
if ( n < 0 ){
return ( pow(-1,-n+1 ) * fib(-n) );
}else if (n == 0){
return 1;
}else{
return fib(n-1) + fib(n-2);
}
}
int main(void){
std::cout << "fib("<< -2<<") = " << fib(-2) << std::endl;
return 0;
}
这给了我一个段错误,知道为什么会这样吗?
编辑:我想出了问题所在。忘记了基本情况,这会导致无限递归,进而导致段错误。