零基礎入門學習Python(24) 遞迴 漢諾塔

2022-05-27 08:57:13 字數 3076 閱讀 4803

這節課主要講解用遞迴的方法,實現漢諾塔的解答

對於遊戲的玩法,我們可以簡單分解為三個步驟:

1) 將前63個盤子從x移動到y上。

2) 將最底下的第64個盤子從x移動到z上。

3) 將y上的63個盤子移動到z上。

用遞迴方法實現

#漢諾塔

def hanoi(n,x,y,z):

if n == 1:

print(x,'-->移動至',z)

else:

hanoi(n-1,x,z,y)#將前n-1個盤從x移動至y上

print(x,'-->移動至',z)#將最底下乙個盤從x移動至z上

hanoi(n-1,y,x,z)#將y上的n-1個盤從y移動至z上

n = int(input('請輸入漢諾塔的層數:'))

hanoi(n,'a','b','c')

***************== restart: c:\users\thinkpad\desktop\test.py ***************==

請輸入漢諾塔的層數:5

a -->移動至 c

a -->移動至 b

c -->移動至 b

a -->移動至 c

b -->移動至 a

b -->移動至 c

a -->移動至 c

a -->移動至 b

c -->移動至 b

c -->移動至 a

b -->移動至 a

c -->移動至 b

a -->移動至 c

a -->移動至 b

c -->移動至 b

a -->移動至 c

b -->移動至 a

b -->移動至 c

a -->移動至 c

b -->移動至 a

c -->移動至 b

c -->移動至 a

b -->移動至 a

b -->移動至 c

a -->移動至 c

a -->移動至 b

c -->移動至 b

a -->移動至 c

b -->移動至 a

b -->移動至 c

a -->移動至 c

#迭代形式

defdec2bin

(dec):

temp =

result =''

while dec:

x = dec % 2

dec //= 2

while temp:

result += str(temp.pop())

return result

print(dec2bin(10))

***************== restart: c:\users\thinkpad\desktop\test.py ***************==

1010

#遞迴形式

defdec2bin

(dec):

result = ''

if dec:

result = dec2bin(dec//2)

return result + str(dec%2)

else:

return result

print(dec2bin(10))

***************== restart: c:\users\thinkpad\desktop\test.py ***************==

1010

>>>

result = 

defget_digits

(n):

if n > 0:

result.insert(0,n%10)

get_digits(n//10)

#result.sort()

get_digits(512364)

print(result)

***************== restart: c:\users\thinkpad\desktop\test.py ***************==

[5, 1, 2, 3, 6, 4]

def

is_palindrome

(n, start, end):

if start > end:

return

1else:

return is_palindrome(n, start+1, end-1) if n[start] == n[end] else

0string = input('請輸入一串字串:')

length = len(string)-1

if is_palindrome(string, 0, length):

print('\"%s\"是回文字串!' % string)

else:

print('\"%s\"不是回文字串!' % string)

使用遞迴程式設計求解以下問題:

有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第三個人大2歲。問第三個人,又說比第二個人大2歲。問第2個人,說比第乙個人大2歲。最後問第乙個人,他說是10歲。請問第五個人多大?

def

age(n):

if n == 1:

return

10else:

return age(n-1) + 2

print('哈哈,我知道了,第五個人的年齡是 %d 歲,啵啵脆!' % age(5))

零基礎入門學習Python

課程介紹 前半部分主要講解python3的語法特性,後半部分著重講解python3在爬蟲 tkinter pygame遊戲開發等例項上的應用。整個系列共16個章節,前邊13個章節從乙個小遊戲引入python,逐步介紹python的語法以及語言特色。最後3個章節為案例的演示,是前邊內容的總結和提高。課...

零基礎入門學習python

1.從idie啟動python idle是乙個python shell,shell的意思就是 外殼 從基本上說,就是乙個通過輸入本與程式互動的途徑。像windows的cmd的視窗,像linux那個黑乎乎的命令視窗,它們都是shell,利用它們,就可以給作業系統下達命令。同樣,可以利用idle這個sh...

Python零基礎入門

python零基礎入門 第一周前言 最近在簡單學習python,在之前的學習中也只對c語言有了乙個粗略的了解,可以說在程式設計方面沒有什麼基礎,當然這也是我第一次寫部落格,希望自己越學越好,希望自己加油 在這一周中,還是學習到了不少的東西,也希望把自己學到的東西寫下來,來加強對python的學習,若...