[问题描述] 有三根塔,第一根塔上从小到大摆有n片铜片,要求把这些铜片摆到第三根塔上.但大铜片不能压在小铜片上面.
输入:[KEYBOARD] 输出:[SCREEN]
3
a->c a->b c->b a->c b->a b->c a->c
[问题分析] 这个问题可以发现一些规律,要把n移动(a->c),即进行以下操作:n-1(a->b);n(a->c);n-1(b->c).形成递归.
program hanoitower;uses crt;
var n:integer;
procedure hanoi(x:integer;a,b,c:char);
begin
if x=1 then write(' ',a,' -> ',c,' ') else
begin
hanoi(x-1,a,c,b);
write(' ',a,' -> ',c,' ');
hanoi(x-1,b,a,c);
end;
end;
begin
clrscr;
write('Hanoi tower,Please input n:');
readln(n);
hanoi(n,'a','b','c');
readln;
end.