这题要用递归做,可有些难。
题目是:
有一个N阶台阶的楼梯(0<N>10),可以一次走一步,也可以一次走两步,用户输入N,输出所有走台阶的方案。
例如:N=3
输出:111
12
21
我有急用!写出答案的同时,最好把为什么这样做也写上,谢谢诸位了!!!!!
參考答案:var
n : integer;
a : array[0..20] of integer;
procedure cal(dep:integer;now:integer);
var i : integer;
begin
if now=n then // 走完时
begin
for i:=1 to dep-1 do
write(a[i]);
writeln;
exit;
end;
a[dep] := 1; // 走一步
cal(dep + 1, now + 1);
if now <= (n - 2) then
begin
a[dep] := 2; // 走两步
cal(dep + 1, now + 2);
end;
end;
begin
write('enter n : ');
readln(n);
cal(1, 0);
end.
pascal 3年没用了......