我寫了下面的程序來查找大斐波納契數的模數。這可以解決大數目,但無法計算如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 long」的容量或範圍,看看是否溢出。如果您的編譯器支持,您可以使用'unsigned long long'擴展範圍。 –
還要檢查編譯器或平臺的堆棧容量。每個遞歸都將數據存儲在堆棧上。 –
您需要驗證您是否未超出陣列的邊界。您需要傳遞數組的容量,以便進行比較。 –