漢諾塔 遞迴過程

2021-09-11 12:09:40 字數 1243 閱讀 9773

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: jia shilin

'''漢諾塔:::

list1,list2,list3三個陣列代表三個柱子和圓盤

數字的大小代表圓盤的大小!

數字的順序代表圓盤的順序

'''# 漢諾塔函式

def h(n, x_list, y_list, z_list, x, y, z):

global count

if (n == 1):

count += 1

print('%s->%s' % (x, z))

try:

tt = x_list.pop(0)

z_list.insert(0, tt)

except:

pass

print(list1, '################', list2, '################', list3)

else:

h(n - 1, x_list, z_list, y_list, x, z, y)

print('%s->%s' % (x, z))

try:

t = x_list.pop(0)

z_list.insert(0, t)

count += 1

except:

pass

print(list1, '################', list2, '################', list3)

h(n - 1, y_list, x_list, z_list, y, x, z)

return count

count = 0 # 移動步數

num = int(input('輸入漢諾塔個數n')) #圓盤初始個數

# 三個柱子和圓盤

list1 = list(range(1, num + 1))

list2 =

list3 =

# 初始狀態欄印

print('初始值')

print(list1, '################', list2, '################', list3)

# 呼叫h()

h(num, list1, list2, list3, 'x', 'y', 'z')

print('總共移動步數:%d' % count)

漢諾塔 遞迴

個人理解遞迴函式的基本要求就是,函式中呼叫函式本身,滿足特定的條件後返回。include include include include include include include include include include include include include 標頭檔案引用的較多...

遞迴漢諾塔

遞迴問題 遞迴要有三個要素 1.遞迴結束條件 2.遞迴結束時的處理 3.抽取重複的邏輯,剝離外殼 重點都在這一步 漢諾塔問題 把圓盤從下面開始按大小順序重新擺放在另一根柱子上。且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。首先,要搞這個編碼得要知道漢諾塔的解題思路 1.把a塔上...

遞迴 漢諾塔

漢諾塔問題。這裡順便可以求出一共需要搬運的次數。以下是漢諾塔問題的解法 class hanoi from 搬運的起點,to 搬運的目標地,middle 臨時中轉地 private static int hanoi int level,char from,char to,char middle int...