递归(面试高频题)

递归(面试高频题)

就是一个方法,自身调用自身,但递归不适用于较大数据计算,会导致计算器内存不足从而崩溃

递归包含两个部分:

  1. 递归头:什么时候不调用自身方法。如果没有递归头,就会陷入死循环。

  2. 递归体:什么时候需要调用自身方法。

    递归的算法公式

package weiwei.method;
public class Demo5 {
   public static void main(String[] args) {
       System.out.println(f(5));//输出递归
  }
   
   
   
   //5! 5*4*3*2*1
   public static int f(int n){//int一个变量n

       if (n==1){//如果n等于1的时候,他的阶乘就是 1*1,所以结果还是为1
           return 1;//就让他直接输出1
      }else{//如果n不等于1的情况下
           /*输出n*f(n-1),加上n为5,就是5*f(5-1) 然后赋(5-1)结果不为1,就继续下去,
f(5-1)=4; f(4-1)=3; f(3-1)=2; f(2-1)=1; 到此等于1了之后,就达到了递归的边界条件,
而1在 n==1的这个条件时,return了一个具体的值,所以1会再次返回找到f(3-1),给他赋一个具体的
值为2,2又会去给f(4-1)赋值3,这样一直赋值到5,然后5把结果输出给了main方法,这样才得以输出*/
           return n*f(n-1);
      }
  }
}

递归和阶乘一样,是一个层层递进的关系,但递归的运行顺序更麻烦,假设递归为5,就可以看做

5==n时: n* f(n-1); f(n-1); f(n-1); f(n-1)获得确定值1后再次返回输出

5* f(5-1); f(4-1); f(3-1); f(2-1)从右到左一次赋值过去,最终得到准确的值,再将值给main方法

 

posted on 2020-10-13 13:08  晋歪歪  阅读(255)  评论(0编辑  收藏  举报