1樓:小
該問題屬於fibonacci取餘的問題。
解法如下:需要注意的是:
1:這道題目,建議用臨時變數,沒必要用陣列存數列,因為題目不關心數列,只關心取餘,也無法知道要設定多大的陣列合適,設定小了,陣列溢位,設定大了,影響記憶體(特別是像這樣定義了這樣的大陣列data[20000],在之後的找工作,面試是很被動,很容易被刷);
2:為了防止n太大,f(n) 的值導致int存不下,可分步取餘(c=(a+b)%10007),然後再加,再取餘;
f(n-1)=(f(n-2)+f(n-3) )10007f(n-2)=(f(n-3)+f(n-4) )10007f(n)=(f(n-1)+f(n-2) )10007
2樓:匿名使用者
這可是一個自然界非常奇妙的數列,但是她的形式又是如此的簡捷。這個數列是這樣定義的:
定義fibonacci數列f(n)是由下面的正整陣列成的序列:
它的第一項(n=1)和第二項為1,即f(1)=f(2)=1其後的每一項為前兩項的和,即f(n) =f(n-1)+f(n-2), 其中n >=3
有的時候也在上面的定義中補上f(0)=0,把遞迴定義往前推一步,這就是你上面的式子:
定義fibonacci數列f(n)是由下面的自然陣列成的序列:
f(0)=0, f(1)=1,f(n) =f(n-1)+f(n-2), n >=2
c語言程式設計問題用fibonacci數列為
int fibo int n 這是遞迴函式,輸入的n表示你要數列的第n項main函式就自己寫吧,從小到大列舉就可以了,懶得寫了另外稍微說一下,如果追求效率的話,可以在遞迴過程中快取所有的運算結果,用少量的空間換取巨大的效率提升,還可以參考數列的通項公式,對大概的項數進行一下預估 int n 5,a ...
C 用陣列的方法求Fibonacci數列的第n項
用陣列的方法求fibonacci數列的第n項 include using namespace std int main void return 0 c 用遞迴函式求斐波那契數列的第n項.呼叫函式內部不能用陣列嗎?為什麼?而且貌似也返回不了陣列值?void sy int k cout 其他地不改 k ...
求Fibonacci數列前數該數列的生成 F1 1,F2 1,Fn Fn 1 Fn 2 n3 即數開始每個數等於前數之和
我就是 我的是高精度 include include include enum const int n 10000 int main b n int bn 1 int i,j div t ad,bd clock t tm clock 計算前計時 a 0 0 b 0 1 初值為0和1 for j 0 ...