汉诺塔问题

递归

问题:将n个盘从A移到C,借助B

1、n==1,直接从A移到C,返回;

2、递归,将n-1个盘从A移到B,借助C;

3、1个盘从A移到C;

4、递归,n-1个盘从B移到C,借助A。

#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;
}


非递归

等有空再整理吧


你可能感兴趣的:(C语言,汉诺塔,世界末日)