首先關於這個問題網上有兩種**,答案都相同
第一種
#include#includeusing namespace std;
int towers(int size,char f,char t,char s)
voidhannuota(intn, chara, charb, charc) //自定義hannuota函式,這裡的a,b,c為形參,不代表具體哪根柱子
}intmain(void)
/*執行詳細步驟:當n = 3 時
n = 3 n = 2 n = 1
| |h(1, a, b, c)=>move(a, c)=> a->c //1
|h(2, a, c, b) |move(a, b) a->b //2
| |h(1, c, a, b)=>move(c, b)=> c->b //3
|h(3, a, b, c) |move(a, c) a->c //4
|| |h(1, b, c, a)=>move(b, a)=> b->a //5
|h(2, b, a, c) |move(b, c) b->c //6
| |h(1, a, b, c)=>move(a, c)=> a->c //7
|執行結果:
請輸入要移動的塊數:
3a-->c
a-->b
c-->b
a-->c
b-->a
b-->c
a-->c
*/
這就讓我開始思考兩**中間被我打***符號的區別了,為什麼他們的效果是一樣的,由此開始思考遞迴的本質,
PHP計算河內塔問題
題目 漢諾塔 又稱河內塔 問題是印度的乙個古老的傳說。開天闢地的神勃拉瑪在乙個廟裡留下了三根金剛石的棒,第一根上面套著64個圓的金片,最大的乙個在底下,其餘乙個比乙個小,依次疊上去,廟裡的眾僧不倦地把它們乙個個地從這根棒搬到另一根棒上,規定可利用中間的一根棒作為幫助,但每次只能搬乙個,而且大的不能放...
河內之塔 漢諾塔問題 遞迴
河內之塔 towersofhanoi 是法國人m.claus lucas 於1883年從泰國帶至法國的,河內為越戰時 北越的首都,即現在的胡志明市 1883年法國數學家edouardlucas曾提及這個故事,據說創世紀時benares有一座波羅教塔,是由三支鑽石棒 pag 所支撐,開始時神在第一根棒...
雙重河內塔II
又稱 雙重漢諾塔問題 雙重河內塔包含 2n 個圓盤,它們有 n 種不同的尺寸,每一種尺寸的圓盤有兩個。如通常那樣,要求每次只能移動乙個圓盤,且不能把較大的圓盤放在較小的圓盤上面。a 如果相同尺寸的圓盤是相互不可區分的,要把乙個雙重塔從一根樁柱移動到另一根樁柱需要移動多少次?所以隱藏含義就是 移動的過...