递归算法(斐波那契数列、汉诺塔问题)

                                  简单的递归算法

package 数据结构demo3;

public class TestRecursive {

	public static void main(String[] args) {
		print(3);
	}
	//递归
	public static void print(int i) {
		if(i>0) {
			System.out.println(i);
			print(i-1);
		}
		
		
	}

}




                                  斐波那契数列
package 数据结构demo3;

public class TestFebonacci {

	public static void main(String[] args) {
		//斐波那契数列: 1 1 2 3 5 8 13 21 34 55
		int i=febonacci(9);
		System.out.println(i);
	}
	//打印第n项斐波那契数列
	public static int febonacci(int i) {
		if(i==1||i==2) {
			return 1;
		}else {
			return febonacci(i-1)+febonacci(i-2);
		}
	}

}




                                  汉诺塔问题
package 数据结构demo3;

public class TestHanoi {

	public static void main(String[] args) {
		hanoi(3,'A','B','C');
		
	}
	/**
	 * n 共有N个盘子
	 * from 开始的柱子
	 * in 中间的柱子
	 * to 目标柱子
	 * 无论有多少个盘子,都认为只有两个。上面的所有盘子和最下面一个盘子。
	 */
	public static void hanoi(int n,char from,char in,char to) {
		
		if(n==1) {
			System.out.println("第1个盘子从"+from+"移到"+to);
		}else {
			//移动上面所有的盘子到中间位置
			hanoi(n-1,from,to,in);
			//移动下面的盘子
			System.out.println("第n个盘子从"+from+"移到"+to);
			//把上面的所有盘子从中间位置移到目标位置
			hanoi(n-1,in,from,to);
			
		}
		
	}

}

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页