C 遞迴實現漢諾塔

2021-07-05 05:26:52 字數 480 閱讀 9916

a為存放盤子的塔,b為目標塔,c為輔助塔

演算法分為三步

一、將a上n-1個盤子全部放到c塔上

二、將a上剩下的乙個盤子放到b塔上

三、將c塔上的盤子全部放到b塔上

注:不需要考慮如何移動n-1個盤子

遞迴過程:

首先,將a上n-1個盤子放到c上,然後將a上剩下的乙個盤子放到b上,然後可以看成a為輔助塔,b為目標塔,c為放盤子的(b中有乙個最大的盤子,但任何盤子都能放到上面,所以可以看做為空),然後將c上n-2個盤子放到a上,剩下的地n-1個盤子放到b上,此時便完成了一次遞迴,然後不斷地重複上述過程即可

**

#include 

using

namespace

std;

void towersofhanoi(int n,char x,char y,char z)

}int main()

C 漢諾塔遞迴實現

程式背景 漢諾塔 tower of hanoi 又稱河內塔,問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之...

C 遞迴,漢諾塔

a為存放盤子的塔,b為目標塔,c為輔助塔 演算法分為三步 一 將a上n 1個盤子全部放到c塔上 二 將a上剩下的乙個盤子放到b塔上 三 將c塔上的盤子全部放到b塔上 注 不需要考慮如何移動n 1個盤子 遞迴過程 首先,將a上n 1個盤子放到c上,然後將a上剩下的乙個盤子放到b上,然後可以看成a為輔助...

漢諾塔 遞迴 c

1.遞迴終止條件 沒有安排好的盤子只剩乙個。此時將其從a,放到c 2.子問題 先將n 1個盤子從a經過中轉站c放到b,再將n 1個盤子從b經中轉站a放到c。3.cout的是從出發點到中轉站,n 1時cout從出發點到終點。輸入 盤子的數量n 輸出 每一步移動 輸入範例 2輸出範例 a b a c b...