正文 第52章 怎樣寫出斐波納契數列(1 / 1)

有一列數,第1項是0,第2項是1。以後各項分別是前兩項的和。

通過心算,我們寫出這列數的前9項:

項數123456789

項值01123581321

如果繼續做下去,將發現後麵各項的值將很快大起來。這是一個很有名而且也很有用的數列,叫做斐波納契數列。

那麼,怎麼編程序讓計算機輸出這個數列呢?這裏的關鍵仍然是變量的概念。

斐波納契數列是無限的,任何人或任何機器也不可能把它寫完,隻能寫出它的前若幹項。下麵的程序將輸出斐波納契數列的前30項。

程序110REM輸出斐波納契數列(1)20A=0:B=1:N=230PRINT A,B,40C=A+B:N=N+150PRINT C,60IF N=30 THEN END70A=B:B=C80GOTO 40程序1中,20語句行A表示數列的第1項,B表示第2項。30語句行輸出這兩項的值。

第1次執行40語句行時,變量C表示的是數列的第3項,第1次執行50語句行時,輸出數列的第3項。

理解這個程序的關鍵是70語句行。當第1次執行70語句行時,變量A、B的值變了。A不再表示數列的第1項,而變為表示數列的第2項;B則表示數列的第3項。因此當程序第2次執行40語句行時,變量C是數列第2項與第3項的和,也就是數列的第4項了。如此反複進行,通過輸出C就可以輸出以後各項的值。

程序中,變量N起著“計數”的作用。

N的初值是2,因為第1次輸出A,B即已輸出了兩項。此後,每輸出一項C,N就增加1,當N增加到30時,表示輸出了30項。此時已滿足60語句行中的條件,程序結束。

下麵的程序2,同樣可以完成題目的要求。它隻用了兩個變量,請讀者自己分析它的思路,並體會程序中變量的作用。

程序210REM輸出斐波納契數列(2)20A=0:B=1:N=030PRINT A,B,40N=N+250IF N=30 THEN END60A=A+B:B=A+B70GOTO 30