递归的理解

152 阅读1分钟

一.什么是递归?

        递归,就是在运行的过程中不断地调用自己。递归有两个过程,简单的说一个是递的过程,一个是归的过程。简单用代码来理解:

   public void fun(参数) {
        if (终止条件) {
            return;
        }
        fun(参数);
        (其他判断条件或语句);
    }
    
**   当第一次进入函数时,先判断是否符合终止条件,符合则直接结束函数,不符合入下一语句,调用自己重新    
     进入下一层自身函数,(注意这是最外一层将不向下继续执行语句,外层卡在fun(参数处)),这个调用自         
     己 进入自身函数的操作过程即为“递”的过程。假设进入下一层后符合终止条件,返回结果,此时之前进入 
     自身函数执行完成返回最外一层函数,最外一层函数递归调用处得到结果,(即内层函数执行完成得到结果返 
     回值),这个过程即为“归”的过程。这时最外一层函数才能继续 下一语句,直至函数运行完成
     
  • 使用递归计算阶乘

       function jc(n){
            if(n==1){
                 return 1;
                    }
                  return n*jc(n-1)
                    }
                var res=jc(4);
       console.log("res="+res);
       
    
  • 使用递归计算斐波那契数列

          //1 1 2 3 5 8 13:每一个数等于前两个数之和
      	function fun(n){
      		if(n==2 || n==1){
      			return 1;
      		}
      		return fun(n-1)+fun(n-2);
      	}
      	console.log(fun(8))