/**
* 递归方法练习
*
* 递归方法: 一个方法体内调用他自身
* 1 方法递归包含了一种隐式的循环,他会重复执行某段代码,但这种重复执行无需循环控制
* 2 递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环
*/
public class Recursion {
public static void main(String[] args) {
int sum = 0;
// for循环求1-100自然数的和
for (int i = 1; i <= 100; i++) {
sum+=i;
}
System.out.println("sum = " + sum);
// 递归方法求1-100自然数的和
Recursion recursion = new Recursion();
int recursionSum = recursion.getSum(100);
System.out.println("recursionSum = " + recursionSum);
// 已知数列 f(0) = 1 f(1) = 4 f(n+2) = 2*f(n+1) + f(n) 求f(10)
int f = recursion.f(3);
System.out.println("f = " + f);
}
/**
* 求f(10)
* @param n
* @return
*/
public int f(int n) {
if (n == 0 ) {
return 1;
} else if (n == 1){
return 4;
} else {
return 2 * f(n - 1) + f(n - 2);
}
}
/**
* 使用递归方法
* 求从n到1的和
* @param n
* @return
*/
public int getSum(int n) {
if (n == 1) {
return 1;
} else {
return n + getSum(n - 1);
}
}
}