public class Recursion01 {
public static void main(String[] args) {
Tt1 = newT();
t1.test(4);//输出什么? n=2 n=3 n=4
}
}
class T {
public void test(int n) {
if (n > 2) {
test(n- 1);
}
System.out.println("n=" + n);
}
}
内存视图分析
递归实例
案例一:阶乘问题(factorial)
java复制代码
import java.util.Scanner;
public class recursion {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
object object = new object();
System.out.print("input a number:");
long n = input.nextLong();
long result = object.factorial(n);
System.out.print("factorial(" + n + ") is:" + result);
}
}
class object{
public long factorial(long n){
if(n == 1){
return 1;
}
else{
return n * factorial(n - 1);
}
}
}
public class recursion {
public static void main(String[] args){
method t = new method();
int res = t.peach(1);
System.out.print(res);
}
}
class method{
public int peach(int day){
if(day == 10){
return 1;
} else if(day >= 1 && day <= 9){
return ( peach(day + 1) + 1 ) * 2; // 枚举每天的情况找规律得到
}else{
return -1;
}
}
}
案例三:斐波那契数列
1,1,2,3,5,8,13...给你一个整数 n,求出它的值是多少?
特点:从第三个数开始,后一个数等于前面两个数之和
java复制代码
//斐波那契数列:1,1,2,3,5,8,13...
public class recursion {
public static void main(String[] args){
method t = new method();
int res = t.fibonacci(10);
System.out.print(res);
}
}
class method{
public int fibonacci(int n){
if(n == 1 || n == 2){
return 1;
}
else{
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
}
//输出:55