汉诺塔问题

递归

问题:将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

相关文章
相关标签/搜索