我想使用for循环创建一个斐波那契序列,但整数相加不起来


procedure TForm1.Button1Click(Sender: TObject);
var
term1: integer;
term2: integer;
term3: integer;
j: integer;
begin
term1 := (0);
term2 := (1);
for j := 1 to 100 do;
begin
term3 :=( term1 + term2);
Memo1.Text:=inttostr(term3);
term1 := term2;
term2 := term3;
end;
end;
end.

到目前为止,这就是我所拥有的,但term1term2不想相加。我尝试了一些不同的方法,但由于某种原因,整数永远不想加起来。

您的代码有几个问题

  1. for j := 1 to 100 do后面的分号防止begin..end块中的下一个代码在循环中运行。为什么?要在for loop的每个循环中运行的代码是在do之后直到第一个分号的代码。由于您将分号放在do之后,这基本上意味着空代码块在循环中运行。你的begin..end块在那之后。删除do之后的分号可以解决这个问题
  2. 您正在使用Memo1.Text:=inttostr(term3);将结果写入备注。这样做的问题是,每次都会重写备忘录的全文,所以你最终只会看到一行显示最后一个数字。您应该使用Memo1.Lines.Add(inttostr(term3));,以便每次都添加新行
  3. 最后,您使用Integer类型作为变量。由于Fibonacci序列中的数字增长非常快,您将很快超过可以存储在Integer中的最大值,该值在Delphi中为有符号32位整数,最大值为2147483647。您将不得不使用更大的整数类型,如64位整数类型,由于您只处理正数,因此您应该使用UInt64类型在Delphi中声明的无符号64位整数。您可以在文档中阅读更多关于Delphi默认Integer类型的信息。不幸的是,即使是UInt64也不足以满足Fibonacci序列前100个数字的值。因此,您必须为Delphi使用BigIntegers库中的一个来正确执行此操作。互联网上有好几种

您的循环中有一个错误的;,需要删除:

for j := 1 to 100 do;
^

相关内容

最新更新