递归

一、递归的本质是什么:递归本质就是循环,只是他是通过循环体进行循环。如果我们把循环的代码和递归的代码进行汇编的话,会发现他们之间有异曲同工之妙

二、java递归代码

public void recur(int level, int param){
        //terminator
        if(level>MAX_VALUE){
        //process result
            return;
        }

        //process result
        process(level, param);


        //drill down
        recur(level+1,newParam);

        //restore current status

    }

三、 初级阶段可以人肉递归或者画递归状态树

四、找最近 重复 子问题。为什么要找最近重复子问题,因为我们计算机只有if else, for while, 递归调用。往往你觉的一个问题很复杂,但是有的时候只用几行代码就能解决,这是因为代码中有很多重复性,我们可以转化为简单的循环问题,或者 if-else解决。

总结:

  1. 抵制人肉递归
  2. 找 最近 重复性
  3. 数学归纳法思维
呵呵
原文地址:https://www.cnblogs.com/jiazhiyuan/p/13288997.html