递归方法:一个方法体内调用它自己
方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。
递归一定要像已知方向递归,否则变成无穷递归,类似死循环。
代码示例:
public class RecursionTest {
public static void main(String[] args) {
int value = 10;
// 计算1-100的和--做法1:for 循环
int sum=0;
for(inti=1;i<=100;i++){
sum += i;
}
System.out.println("1+2+3+...+" + value * 10 + " = " + sum);
// 计算1-100的和--做法2:递归
RecursionTest test = new RecursionTest();
int sum1 = test.getSum(value * 10);
System.out.println(sum1);
// 计算数列值
int result = test.f(value);
System.out.println("数列f(" + value + ")的值是:" + result);
// 打印斐波拉切数列
System.out.println("斐波拉切数列前" + value + "位的数列是:");
for(inti=1;i<=value;i++){
System.out.print(test.fibonacci(i) + " ");
}
}
// 递归方法求和
public int getSum(int n) {
if(n==1){
return n;
} else {
returnn+getSum(n-1);
}
}
// 已知有一个数列:f(0) = 1, f(1) = 4, f(n+2)=2*f(n+1)+f(n),其中n是大于0的整数,求f(10)的值。
public int f(int n) {
if(n==0){
return 1;
}elseif(n==1){
return 4;
} else {
return2*f(n-1)+f(n-2);
}
}
// 斐波那切数列(Fibonacci)的第n个值,如:1,1,2,3,5,8,13,21,34,55
public int fibonacci(int n) {
if(n==0||n==1){
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
}