但是我們可以寫個小遊戲–漢諾塔 的外掛程式,這個遊戲相信很多同學都玩過。
開始是三層,還很簡單,四層還好,五層六層就有點費腦殼了。
話不多說,言歸正傳
遞迴就是函式裡呼叫本身,直到出現停止的條件
廟裡有的三根柱子,第乙個有64個盤子,從上往下越來越大。要求廟裡的老和尚吧64個盤子全部移動到第三個柱子上。移動的時候小的始終在大的盤子上,且每次只能移動乙個。
1、老和尚(第乙個和尚)覺得很難,所以他叫另乙個和尚先把前63個盤子移到第二根柱子上,他在把最後乙個盤子移到第三個柱子上,再由那個和尚把第二個柱子上的63個移到第三個柱子上,任務就完成了。
2、第二個和尚又叫乙個和尚把前62個盤子移到第三個柱子上,他再把第63個移到第二個上,再由那個和尚把第三個柱子上的62個盤子移到第二根柱子上
3、第三個和尚接了任務,又把前61個盤子的任務交給了下乙個和尚,直到第64個和尚把第乙個盤子一一下了。
至此,任務分配完成了。然後做準備:
我們姑且把三根柱子從左到右依次命名為x,y,z。一共需要四個變數:分別是漢諾塔層數,與三根柱子的名字x,y,z。
所以我們建立乙個函式:
def
hanoi
(n,x,y,z)
;if n ==1:
print
(x,'--->'
,z)#只需一步,把第乙個柱子直接移到第三個柱子上
else
: hanoi(n-
1,x,z,y)
#如果n大於1我們先把n-1個移到第二柱子上,也就是y上,
print
(x,'--->'
,z)#然後把最後乙個移到第三個柱子上
hanoi(n-
1,y,x,z)
#再把n-1個移到第三個上
#至此大功告成!!!我們可以直接引用這個函式了
hanoi(4,
'x',
'y',
'z')
#注意柱子名是字元,要打''
接下來展示我從n=1到n=3的執行截圖吧!
ps:網頁上的和尚移盤子故事字太多,又不能複製,全是自己精簡了之後一字一字敲出來的,有很多可能沒說清楚,見諒。
如何用C 寫乙個類
其實寫乙個類很簡單,但是要寫乙個符合各方面要求的類,卻不是一件容易的事情。下面總結一下需要考慮的一些問題,先把暫時想到的方面記下來,以後想到新的在增加吧。類的生死和初始化 1.copy ctor和copy assignment是不是需要private 單例常用 或者是不是要用private繼承來阻止...
如何用Javascript寫乙個Class?
記得前面某次面試被問到此問題,一直以來因為對js的不重視 一知半解,所以當時就懵了 最近google了下,找到以下幾種寫class的方式 1 js因為不是oo語言,所以沒有class的概念,都是通過prototype的方式實現的。var namedclass class.create getname...
如何用Python寫乙個貪吃蛇AI
這兩天在網上看到一張讓人漲姿勢的,中展示的是貪吃蛇遊戲,估計大部分人都玩過。但如果僅僅是貪吃蛇遊戲,那麼它就沒有什麼讓人漲姿勢的地方了。問題的關鍵在於,中的貪吃蛇真的很貪吃xd,它把矩形 現的食物吃了個遍,然後華麗麗地把整個矩形填滿,真心是看得賞心悅目。作為乙個cser,第乙個想到的是,這東西是寫程...