pascal!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/15 04:42:58
楼梯共有N阶台阶,上楼可以以一步上一个台阶,也可以一步上二个台阶。
编一个程序计算上N阶台阶共有多少种步法
pascal
pascal
thank you

var
n,i:integer;
c:array[0..5000]of int64;
function count(k:integer):int64;
begin
if c[k]<>0 then begin count:=c[k]; exit; end;
count:=count(k-1)+count(k-2);
c[k]:=count;
end;
begin
readln(n);
fillchar(c,sizeof(c),0);
c[0]:=1; c[1]:=1;
writeln(count(n));
end.

通过上面的递归过程可以看出本题就是求斐波那契数列的第n项,组合数学里的例题。
n=0或1的时候是递归的终止条件,当然想通以后用递推做更好!

program sd;
var n:integer;
a,b,j,t:longint;
begin
readln(n);
a:=1;
b:=2;
if n=1 then writeln('1')
else if n=2 then writeln('2')
else begin
n:=n-2;
while n<>0 do
begin
j:=a+b;
t:=a;
a:=b;
b:=b+t;
n:=n-1;
end;
writeln(j);
end;
end.

program stairs;
var
a:array [1..10000] of qword; //a[t]表示第t级台阶的方案数
i,n:longint;
begin
readln(n);
a[1]:=1;
a[2]:=2;