书城科普读物探索未知丛书-计算机王国
45421700000052

第52章 怎样写出斐波纳契数列

有一列数,第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