汉诺塔问题(递归)

问题:将原柱n个圆盘移到目的柱。

算法:

1)将原柱最上面n-1个圆盘移到辅助柱(与原问题相同)

2)将第n个圆盘从原柱移到目的柱。

3)将辅助柱n-1个圆盘移到目的柱(与原问题相同)


void move(char from, char to){
    println("Move from" + from + "to" + to);
}

void hanoi(int n, char from, char to, char aux){
	if(n==1){
		move(from,to); 
		returnl;
	}
	
	//将原柱最上面n-1个圆盘移到辅助柱
	hanoi(n-1, from, aux, to);
	//将第n个圆盘从原柱移到目的柱
	move(from,to);
	//将辅助柱n-1个圆盘移到目的柱
	hanoi(n-1, aux, to, from);
}



   

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/UNOENO/article/details/80685859
个人分类: 数据结构与算法
下一篇算法问题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭