負のインデックスを考慮に入れるために、フィボナッチ数に拡張子を追加しようとしています。拡張子は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;
}
これは私にセグメンテーション違反を与えます、これがなぜであるかについて何か考えはありますか?
編集:私は問題が何であるかを理解しました。基本ケースを忘れたため、無限再帰が発生し、セグメンテーション違反が発生しました。