java的递归详细讲解

103 阅读2分钟


public class hello{

	public static void main(String[] args){
			
		 int n=5;
		 System.out.println("第"+n+"个月的兔子总数是"+funs(n));
		 
	 }

 
	
	private static int funs(int n){ 
		
		if(n==1||n==2) 		
			return 1;
			else				
		return funs(n-1)+funs(n-2);								
		 }
		
}

	 
	

	

public class hell {

	public static void main(String[] args){
		 int n=6;
		 System.out.println("第"+n+"个月的兔子总数是"+funs(n,"入口"));
		 
	 }
	private static int funs(int n,String s){ 
		System.out.println("初始化的n的值="+n);
		
		System.out.println("n值来源="+s);
		
		if(n==1||n==2) {	
			return 1;
		}else {
			int i=funs(n-1,"第一次计算");
			
			
			 
			int i1=funs(n-2,"第二二二次计算");
			
			System.out.println("///*************///");
			System.out.println("n-1结果="+i);
			System.out.println("///*************///");
			System.out.println("n-2结果="+i1);
			
			return i+i1;	
			
		}
	}
	
	
	
	
	
}






初始化的n的值=6
n值来源=入口
初始化的n的值=5
n值来源=第一次计算
初始化的n的值=4
n值来源=第一次计算
初始化的n的值=3
n值来源=第一次计算
初始化的n的值=2
n值来源=第一次计算
初始化的n的值=1
n值来源=第二二二次计算
///*************///
n-1结果=1
///*************///
n-2结果=1
初始化的n的值=2
n值来源=第二二二次计算
///*************///
n-1结果=2
///*************///
n-2结果=1
初始化的n的值=3
n值来源=第二二二次计算
初始化的n的值=2
n值来源=第一次计算
初始化的n的值=1
n值来源=第二二二次计算
///*************///
n-1结果=1
///*************///
n-2结果=1
///*************///
n-1结果=3
///*************///
n-2结果=2
初始化的n的值=4
n值来源=第二二二次计算
初始化的n的值=3
n值来源=第一次计算
初始化的n的值=2
n值来源=第一次计算
初始化的n的值=1
n值来源=第二二二次计算
///*************///
n-1结果=1
///*************///
n-2结果=1
初始化的n的值=2
n值来源=第二二二次计算
///*************///
n-1结果=2
///*************///
n-2结果=1
///*************///
n-1结果=5
///*************///
n-2结果=3
第6个月的兔子总数是8





这样的话可能相对好理解点 但是还是不太清楚

n=1 结果为1 n=2 结果为1 n=3 结果为2 n=4 结果为3 n=5 结果为5

请问如何理解n的结果呢? 我求大神讲解

开发者涨薪指南

48位大咖的思考法则、工作方式、逻辑体系