1. 程式人生 > >漢諾塔遞歸算法

漢諾塔遞歸算法

-1 利用 表示 main using finish int rfi stream

利用遞歸算法:

第一步:將n-1個盤子移到B

第二步:將第n個盤子移到C

第三步:將n-1個盤子移到C

#include<iostream>
using namespace std;
int count=0;

void  move(int n,char a,char b)   //n表示盤子號a表示盤子的起始位置 b表示盤子到達的位置
{
    cout<<a<<"->"<<b<<endl;
    count++;
}
void towerfinish(int
n,char a,char b,char c) //n表示要移動的盤子的數目 //將a位置的盤子移動到c,以b為輔助塔 { if(n==1) { move(1,a,c); } else { towerfinish(n-1,a,c,b); move(n,a,c); towerfinish(n-1,b,c,a); } } int
main() { char a=A; char b=B; char c=C; int d; cout<<"請輸入盤子的數量:"<<endl; cin>>d; towerfinish(d,a,b,c); cout<<"一共移動了"<<count<<""<<endl; }

漢諾塔遞歸算法