汉诺塔问题:
将盘子从左边全部移动到右边,规则:小盘只能放到大盘上面。
代码如下:
public class Hanoi {
public static HashMap<Integer,Integer> map = new HashMap<>();
static String A = "A";
static String B = "B";
static String C = "C";
public static void main(String[] args) {
hanoi(3,A,B,C);
}
public static void hanoi(int n,String form,String in,String to){
if(n==1){
System.out.println("第"+n+"个盘子从"+form+"移动到"+to);
}else{
hanoi(n-1,form,to,in);
System.out.println("第"+n+"个盘子从"+form+"移动到"+to);
hanoi(n-1,in,form,to);
}
}
}
斐波那契数列:
1、1、2、3、5、8、13、…
第N个数等于 (n-1)+(n-2);
public class Fibonacci {
public static HashMap<Integer, Integer> map = new HashMap<>();
//0,1,1,2,3,5,8,13,21,34...
public static void main(String[] args) {
int result = fibonacci(0);
System.out.println(result);
}
public static int fibonacci(int n) {
if(map.get(n)!=null) return map.get(n);
int tempNum = 0;
if (n == 1 || n == 2) {
tempNum = 1;
} else if(n>2) {
tempNum = fibonacci(n-1) + fibonacci(n-2);
}
if(map.get(n)==null) map.put(n,tempNum);
return tempNum;
}
}