漢諾塔問題

遞歸

問題:將n個盤從A移到C,藉助Bios

一、n==1,直接從A移到C,返回;spa

二、遞歸,將n-1個盤從A移到B,藉助C;code

三、1個盤從A移到C;遞歸

四、遞歸,n-1個盤從B移到C,藉助A。io

#include<iostream>
using namespace std;

void move(char src, char dest){
	cout<<src<<"-->"<<dest<<endl;
}

void hanoi(int n, char chA, char chB, char chC){
	if(n==1){
		move(chA, chC);
		return;
	}
	hanoi(n-1, chA, chC, chB);
	move(chA, chC);
	hanoi(n-1, chB, chA, chC);
}

int main(){
	hanoi(10, 'A', 'B', 'C');
	return 0;
}


非遞歸

等有空再整理吧class

相關文章
相關標籤/搜索