* <第3章> 递归 </第3章>
* 3.1 递归 示例:{@link Recursion}
* (1)如果使用循环,程序的性能可能更高;如果使用递归,程序可能更容易理解
* 3.2 基线条件和递归条件
* (1)每个递归函数都有两部分:基线条件(base case)和递归条件(recursive case)
* 3.3 栈
* 3.4 小结
* (1)递归指的是调用自己的函数
* (2)每个递归函数都有两个条件:基线条件和递归条件
* (3)栈有两种操作:压入和弹出
* (4)所有函数调用都进入调用栈
* (5)调用栈可能很长,这将占用大量的内存
public class Recursion {
/**
* 非负整数集上定义函数f,满足f(0)=0且f(x)=2f(x-1) + x²
*
* @param x
* @return
*/
private static int f(int x) {
if (x == 0) return 0; //基准情形(base case)
else return 2 * f(x - 1) + x * x; //不断推进(making progress)
}
public static void main(String[] args) {
System.out.println(f(4));
}
}