汉诺塔问题----递归

    xiaoxiao2021-04-14  62

    古代有一个梵塔,塔内有三个座A、 B、 C, A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图)。有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。 在移动过程中可以利用B座,要求输出移动的步骤。

    #include<iostream> using namespace std; void Hanoi(int n, char src,char mid,char dest) //将src座上的n个盘子, 以mid座为中转, 移动到dest座 { if(n == 1) { //只需移动一个盘子 cout<< src << "->" << dest<< endl; //直接将盘子从 src移动到 dest即可 return; } Hanoi(n -1,src ,dest,mid); cout << src << "->" <<dest << endl; //再将一个盘子从src移动到 dest Hanoi(n -1,mid,src,dest); return; } int main() { int n; cin >> n; //输入盘子数目Hanoi(n, 'A' , 'B' , 'C') ; return 0; Hanoi(n,'A','B','C'); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-669870.html

    最新回复(0)