可能重複:
I want to generate the nth term of the sequence 1,3,8,22,60 ,164 in Order(1) or order of (nlogn)
Calculate the nth term of the sequence 1,3,8,22,60,164,448,1224…?算法來求解F(N)= 2 *(F(N-1)+ F(N-2))模1000000007
我有一個遞歸關係f(n)= 2 *(f(n-1)+ f(n-2))。我必須求解f(k)mod 1000000007,其中k是輸入。 k的範圍是1 < = k < = 1000000000 ?.我試圖通過簡單的遞歸函數來實現它,但顯然它會導致大k溢出,因此我遇到運行時錯誤。我對算法和東西很陌生,所以需要知道是否存在具體和有效的方法來解決這些問題?
#include<stdio.h>
#define M 1000000007
long long unsigned res(long long unsigned n){
if(n==1)
return 1;
else {
if(n==2)
return 3;
else return (2*(res(n-1)%M+res(n-2)%M));
}
}
int main(){
int test;
scanf("%d",&test);
while(test--){
long long unsigned n;
scanf("%llu",&n);
printf("%llu\n",res(n));
}
getch();
return 0;
}
告訴我們你有什麼試過的。什麼是基本情況? – Mark
每次有人在評論中發佈代碼 - 拋出異常... – alfasin
srry!...這是一個錯誤!我不是故意的,加上互聯網在這裏吸取 – jigsawmnc