問題提出,怎麼記錄漢諾塔問題中盤子移動的次數?
def hanu(n,a,b,c):
if n==1 :
print("move",a,"->",c)
return
hanu(n-1,a,c,b)
print("move",a,"->",b)
hanu(n-1,b,a,c)
print("move",b,"->",c)
hanu(2,"a","b","c")
思來想去,還是使用全域性變數
怎麼使用全域性變數呢?
兩步走:
1.定義
2.使用時再次宣告
也就是說全域性變數在使用之前就要宣告,宣告全域性變數使用關鍵字 global,然後在使用該全域性變數之前,再次宣告
示例:global i //在使用前初次宣告
i=1 //給全域性變數賦值
def hanu(n,a,b,c):
global i //再次宣告,表示在這裡使用的是全域性變數,而不是區域性變數
i+=1 //兩次遞迴到最後,多加了一次,最後 i-1才是真正的移動次數
if n==1 :
print("move",a,"->",c)
return
hanu(n-1,a,c,b)
print("move",a,"->",c)
hanu(n-1,b,a,c)
hanu(2,"a","b","c")
print("move counts=
",i-1) //最後輸出 i-1 得到移動的總次數
輸出結果:
move a -> b
move a -> b
move b -> c
move b -> c
move counts= 3
python怎麼使用全域性變數
1 在函式外部定義x 6 2 在函式內部再次定義global x x 6def func global x 定義外部的x x 1func print x 輸出1如果沒有在函式內部global修飾,那麼會在函式內部定義乙個同名區域性變數並隱藏掉同名全域性變數。為全域性變數定義乙個 全域性變數管理模組 ...
python 全域性變數
應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...
Python 全域性變數
應該盡量避免使用全域性變數。不同的模組都可以自由的訪問全域性變數,可能會導致全域性變數的不可預知性。對全域性變數,如果程式設計師甲修改了 a的值,程式設計師乙同時也要使用 a,這時可能導致程式中的錯誤。這種錯誤是很難發現和更正的。全域性變數降低了函式或模組之間的通用性,不同的函式或模組都要依賴於全域...