zoukankan      html  css  js  c++  java
  • 递归(面试高频题)

    递归(面试高频题)

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

    递归包含两个部分:

    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方法

     

  • 相关阅读:
    20145109 《Java实验报告1》
    20145109 《Java程序设计》第五周学习总结
    20145109 《Java程序设计》第四周学习总结
    20145109 《Java程序设计》第三周学习总结
    20145109《Java程序设计》第二周学习总结
    20165322 第十周课下补做
    20165322 实验三 敏捷开发与XP实践
    20165322 第九周学习总结
    20165322 第二周结队编程-四则运算
    20165322 第八周学习总结
  • 原文地址:https://www.cnblogs.com/jinweichaoyouqu/p/13808104.html
Copyright © 2011-2022 走看看