我写了下面的程序来查找大斐波纳契数的模数。这可以解决大数目,但无法计算如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'扩展范围。 –
还要检查编译器或平台的堆栈容量。每个递归都将数据存储在堆栈上。 –
您需要验证您是否未超出阵列的边界。您需要传递数组的容量,以便进行比较。 –