递归算法

    技术2024-10-20  25

    数据结构与算法—递归算法

    递归简介

    递归:就是函数自己调用自己。 对于递归要分清以下概念:

    自己调用自己递归通常不在意具体操作,只关心初始条件和上下层的变化关系。递归函数需要有临界停止点,即递归不能无限制的执行下去。通常这个点为必须经过的一个数。递归通常能被其他方案替代(栈、数组正向求)。

    认识递归,递归函数通常简易但是对于初学者可能很难取理解它。拿一个递归函数来说。

    static void digui() { System.out.println("bigsai前"); digui(); System.out.println("bigsai后"); }

    如果不是正常递归,没有结束条件,自己调用自己一律是死循环。 正确的递归应该这样:

    static void digui(int time) { if(time==0) {}//time==0不执行 else { System.out.println("bigsai前time: "+time); digui(time-1); System.out.println("bigsai后time: "+time); } }

    1.用递归函数求1加到10的和

    function sum(n){ if(n == 1){ return sum = 1; } return n+sum(n-1); } console.log(sum(10)); //55

    2.递归求阶乘

    求 n!=n*(n-1)*-----1=n!=n(n-1)! 所以阶乘的上下级的关系很容易找到。我们假设一个函数jiecheng(n)为求阶乘的函数。 这个阶乘,你可以这样命名:

    static int jiecheng(int n) { if(n==0)//0的阶乘为1 { return 1; } else { return n*jiecheng(n-1);//return n*(n-1)*jiecheng(n-2)=------- } }
    Processed: 0.008, SQL: 9