递归调用(汉诺塔)

来源:互联网 发布:纵横数据 编辑:程序博客网 时间:2024/05/16 12:38

递归调用的两个准则是:一要保持原是问题的形式,逐步降低复杂度。二是最简单的情况可以直接解决。

汉诺塔的算法原理:

        step1:把N-1个圆盘从original移动到temp 

        step2:把第N个圆盘从original移动到destination

        step3:把N-1个圆盘从temp移动到destination

具体的代码如下:

public class Main {private void hano(int num, char original, char destination, char temp){//问题最简单的形式if(num == 1){move(original, destination);}//具体的算法,注意保持问题的原始形式else{hano(num-1, original, temp, destination);//step1move(original, destination);//step2hano(num-1, temp, destination, original);//step3}}private void move(char original, char destination) {System.out.println("direction: " + original + " --> " + destination);}public static void main(String[] args) {new Main().hano(3, 'A', 'B', 'C');}}


0 0
原创粉丝点击