总经理的电话:斐波拉契数列 看看哪儿错了(pascal)

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 03:39:35
var
i,k:integer;
function f(x:integer) :integer;
begin
if i=1 then f:=1;
if i=2 then f:=2;
if i>=3 then f:=f(i-1)+f(i-2);
end;
begin
readln(i);
k:=f(i);
writeln(k);
end.
呵呵
应改为
var
i,k:integer;
function f(x:integer) :integer;
begin
if i=1 then f:=1;
if i=2 then f:=1;
if i>=3 then f:=f(i-1)+f(i-2);
end;
begin
readln(i);
k:=f(i);
writeln(k);
end.
可是这样也不行

改一下function:

function f(x:integer) :integer;
begin
if (x = 1) or (x=2) then f := 1;
if x >= 3 then f := f(x-1) + f(x-2);
end;

然后你再试试
另外,斐波那契数列第2项应该是1吧(如上面所改的)

补充:看到你改的了,可是最关键是把函数中的i改为x,因为它才是函数的参数啊!

x在函数中没用到

没有循环吧,好象只加了一次,就是(i-1)+(i-2);

if i=1 then f:=1;
if i=2 then f:=2;
这两句的后面要加个返回的语句