早教吧 育儿知识 作业答案 考试题库 百科 知识分享

(斐波那契数列)谁能解释一下这个程序中的“c[i]:=c[i]+a[i]+b[i];varn,i,l:integer;a,b,c:array[1..10000]ofbyte;procedureplus;vari:integer;beginfillchar(c,sizeof(c),0);fori:=1toldobeginc[i]:=c[i]+a[i]+b[i];c[i+1]:=c[i]d

题目详情
(斐波那契数列)谁能解释一下这个程序中的“ c[i]:=c[i]+a[i]+b[i];
var
n,i,l:integer;
a,b,c:array [1..10000] of byte;
procedure plus;
var i:integer;
begin fillchar(c,sizeof(c),0);
for i:=1 to l do begin c[i]:=c[i]+a[i]+b[i];
c[i+1]:=c[i] div 10;
c[i]:=c[i] mod 10;
end;
if c[l+1]>0 then l:=l+1;end;
begin readln(n);
a[1]:=1;b[1]:=1;c[1]:=1;
l:=1;
for i:=3 to n do begin plus;
a:=b;
b:=c;
end;
for i:=l downto 1 do write(c[i]);
writeln;
end.
▼优质解答
答案和解析
procedure plus;
var i:integer;
begin fillchar(c,sizeof(c),0);
for i:=1 to l do
begin
c[i]:=c[i]+a[i]+b[i]; //对每一位进行求和
c[i+1]:=c[i] div 10; //这二行对c[i]进行进位处理
c[i]:=c[i] mod 10;
end;
if c[l+1]>0 then l:=l+1; //如最高位发生了进位,则和的位数加1
end;
这个过程是一个高精度加法的过程.