大きなフィボナッチ数のモジュラスを見つけるための次のプログラムを書いた。これは大きな数値を解決できますが、fibo_dynamic(509618737,4602,229176339)
のような場合は計算できません。a = 509618737
、b = 4602
、N = 229176339
です。この仕事をするのを手伝ってください。フィボナッチ数の大きい数字の検索
long long fibo_dynamic(long long x,long long y,long long n, long long a[]){
if(a[n]!=-1){
return a[n];
}else{
if(n==0){
a[n]=x;
return x;
}else if(n==1){
a[n]=y;
return y;
}else {
a[n]=fibo_dynamic(x,y,n-1,a)+fibo_dynamic(x,y,n-2,a);
return a[n];
}
}
}
あなたがオーバーフローかどうかを確認するために、 '長いlong'の容量や範囲を確認してください。コンパイラがサポートしている場合は、 'unsigned long long'を使用して範囲を拡張することができます。 –
コンパイラまたはプラットフォームのスタック容量も確認してください。各再帰はスタックにデータを格納します。 –
アレイの境界を超えていないことを確認する必要があります。比較できるように、配列の容量を渡す必要があります。 –