河內塔問題

2021-07-07 09:23:10 字數 1026 閱讀 5608

首先關於這個問題網上有兩種**,答案都相同

第一種

#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 如果相同尺寸的圓盤是相互不可區分的,要把乙個雙重塔從一根樁柱移動到另一根樁柱需要移動多少次?所以隱藏含義就是 移動的過...