一个超级难的free pascal循环问题
来源:百度知道 编辑:UC知道 时间:2024/05/31 21:45:25
题目是:某人上台阶,一步可以走一个台阶,也可以走两个台阶,还可以走三个台阶。问他走到10层台阶时共有多少种不同走法?
用F[I]表示上到第I级台阶时的方法数
因为F[I]只能由F[I-1],F[I-2],F[I-3]三种状态到达,所以递推式
F[I]=F[I-1]+F[I-2]+F[I-3]
Var F:Array[0..10]of Longint;
I:Longint;
Begin
F[0]:=1;
F[1]:=1;
F[2]:=2;
For I:=3 to 10 do
F[I]:=F[I-1]+F[I-2]+F[I-3];
Writeln(F[10]);
End;
本题递推
var f:array[-2..10] of longint;
i:longint;
begin
f[0]:=1;
for i:=1 to 10 do
f[i]:=f[i-1]+f[i-2]+f[i-3];
writeln(f[10]);
end.
从1层顺推到10层,每层满足方案数为i-1层、i-2层、i-3层方案数和。
f[0]:=1;为初始化
答案为274吧
答案为斐波那契数列
楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,还可以走三个台阶。编一程序计算共有多少种不同的走法.
设n阶台阶的走法数为f(n)
显然有
1 n=1
f(n)={ 2 n=2
3 n=3
f(n-1)+f(n-2)+f(n-3) n>3
可编程序如下:
program louti;
var n:integer;
function f(x:integer):integer;
begin
if x