递归
一个简单的递归
public void recursion(int n) {
System.out.print(n);
if (n < 0) {
return;
} else {
recursion (n - 1);
System.out.print(n);
}
}
输入3
输出 3 2 1 0 -1 0 1 2 3
阶乘
public int factorial(int n) {
if (n <= 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
斐波那契数列(兔子数列)
1、1、2、3、5、8、13、21、34、…
从第三项开始,每项都是前两项之和
public int feibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return feibonacci(n - 1) + feibonacci(n - 2);
}
}
汉诺塔
/**
* @param n 盘子个数
* @param start
* @param middle
* @param end
* @return
*/
public void hanoi(int n, int start, int middle, int end) {
if (n <= 1) {
System.out.println(start + "--to--" + end);
} else {
hanoi(n - 1, start, end, middle);
System.out.println(start + "--to--" + end);
hanoi(n - 1, middle, start, end);
}
}
hanoi(3, 1, 2, 3);
输出路径:
1–to–3
1–to–2
3–to–2
1–to–3
2–to–1
2–to–3
1–to–3
7–1083
8–3265
9–3265
10–4209
11–3855
12–2629
1–3735
2–3435