import java.util.ArrayList; import java.util.List; /** * Created by itworker365 on 5/10/2017. */ public class digui { public static void main (String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); System.out.println(recursive(list, list.size() - 1)); hanoi(3); } public static int recursive (List<Integer> list, int pos) { if (pos >= 2) { int sum = list.get(pos) + list.get(pos - 1); return sum + recursive(list, pos - 2); } else if (pos == 1) { return list.get(pos) + list.get(pos - 1); } else if (pos == 0) { return list.get(pos); } else { return 0; } } //汉诺塔问题,大小交叠的盘子如何用3个柱子轮换,如果只有一个直接换,两个借助中间柱子中转,再多就直接将n-1看成一块递归计算 private static void hanoi (int n) { hanoiLogic(n, "A", "B", "C"); } private static void hanoiLogic (int n, String A, String B, String C) { if (n == 1) { move(n, A, C); } else { hanoiLogic(n - 1, A, C, B); move(n, A, C); hanoiLogic(n - 1, B, A, C); } } private static void move (int n, String from, String to) { System.out.println("move from " + from + " to: " + to); } }