有三根頂針,在第一根頂針上放著若干個盤子,且小盤子在大盤子上面,現把這些盤子從第一根頂針上移動到第三根頂針上,且小盤子依舊在大盤子之上。在移動的過程中可以借助第二根頂針,每次只能移動一個盤子,且小盤子要在大盤子上面,如何移動才能使所有盤子從第一根頂針到第三根頂針上。
采用遞歸迭代的方法,先將第n-1個盤子移動到第二根頂針上,讓後將第一根頂針上的盤子移動到第`三根頂針上,通過同樣的方法將n-1個盤子移動到第三個盤子上。
def hanoni(n,x,y,z):
if(n==1):
print(x,'--->',z);
else:
hanoni(n-1,x,z,y);
print(x,'--->',z);
hanoni(n-1,y,x,z);
n = int(input('請輸入漢諾塔的層數:'));
hanoni(n,'x','y','z');