Pascal 斐波那契数列 求纠错!vara,b,c :array[1..100] of integer;n,i,j,x,w :integer;procedure f(n:longint);beginfillchar(a,sizeof(a),0);b := a;a[1]:=1; b[1]:=1; x:=0;for i:=1 to n-2 dobeginfor j:=1 to 100 dobeginc[j]:=a[j]+b[j]+x;x:=c[j] div 10
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/08 03:14:07
Pascal 斐波那契数列 求纠错!vara,b,c :array[1..100] of integer;n,i,j,x,w :integer;procedure f(n:longint);beginfillchar(a,sizeof(a),0);b := a;a[1]:=1; b[1]:=1; x:=0;for i:=1 to n-2 dobeginfor j:=1 to 100 dobeginc[j]:=a[j]+b[j]+x;x:=c[j] div 10
Pascal 斐波那契数列 求纠错!
var
a,b,c :array[1..100] of integer;
n,i,j,x,w :integer;
procedure f(n:longint);
begin
fillchar(a,sizeof(a),0);
b := a;
a[1]:=1; b[1]:=1; x:=0;
for i:=1 to n-2 do
begin
for j:=1 to 100 do
begin
c[j]:=a[j]+b[j]+x;
x:=c[j] div 10 ;
c[j]:=c[j] mod 10 ;
end;
a:=b; b:=c;
end;
end;
begin
readln(n);
f(n);
for i:=n downto 1 do if c[i]0 then w:=i;
for i:=w downto 1 do write(c[i]);
end.
程序报错.
顺便找一个老师指导我算法!无偿..
Pascal 斐波那契数列 求纠错!vara,b,c :array[1..100] of integer;n,i,j,x,w :integer;procedure f(n:longint);beginfillchar(a,sizeof(a),0);b := a;a[1]:=1; b[1]:=1; x:=0;for i:=1 to n-2 dobeginfor j:=1 to 100 dobeginc[j]:=a[j]+b[j]+x;x:=c[j] div 10
不知道你程序报错是报什么错……不过你这个程序输出的明显是错的………………
因为你for i:=n downto 1 do if c[i]0 then w:=i;这里给w赋值之后没有退出去……
所以你永远只会输出个位数.
楼下qword是无符号的longint,还没int64位数多的说,只能存20位左右吧.
然后所谓的通项公式,由于double的精度只有8位的样子,基本是不好用的,比较快的求这类数列一般是用矩阵来快速幂
就是一次矩阵乘法表示一次操作,可以理解成类似直接矩阵相乘来累计操作次数
这样就只要logn 乘以 矩阵乘法一个常数(斐波那契数列就只有8..)
如果是输出完整答案就在乘一个高精度的复杂度即可
最近这里发程序经常被和谐...你要是好奇留个邮箱我给你写个...