這節課主要講解用遞迴的方法,實現漢諾塔的解答
對於遊戲的玩法,我們可以簡單分解為三個步驟:
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的學習,若...