Fibonacci数列问题~pascal~~

来源:百度知道 编辑:UC知道 时间:2024/05/11 18:54:43
Fibonacci数列问题

Description

Fibonacci数列问题:数列的头两个数分别为0,1,从第三个数开始,每个数皆为它的前面两个数之和,即:0,1,1,2,3,5,…,输出该数列的第n个数。

Input

一行,n(1<=n<=45)

Output

一行,第n个数

Sample Input

5

Sample Output

3

(真不明白为什么N这么小)(长整形就没问题了)

var i,n:integer;
a:array[1..45] of longint;
begin
readln(n);
a[1]:=0;
a[2]:=1;

for i:=3 to n do a[i]:=a[i-2]+a[i-1];

writeln(a[n]);
end.

n确实很小,但我的程序可以适应更大的n,而楼上的不能。
我的程序比他的程序能处理的范围更广,而使用的空间更小,不论n有多大,都不改变占用空间的大小。
var
i,n:longint;
a1,a2,a3:qword;

begin
readln(n);
a1:=0;
a2:=1;
for i:=3 to n do begin
a3:=a2+a1;
a1:=a2;
a2:=a3;
end;
writeln(a3);
end.