递归方式转迭代方式

Posted longfeiphp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归方式转迭代方式相关的知识,希望对你有一定的参考价值。

通过对斐波那契数列和阶乘把递归转循环(是不是所有递归都可以转为循环?)

/*斐波那契数列*/
static function getN($n)
{
        if ($n<=0) return 0;
        if ($n<=2) return 1;
        /*递归法*/
        return static::getN($n-1) + static::getN($n-2);

        /*循环法*/
        $a1 = 1; $a2 = 1; $a3 = 2;
        for ($i=3;$i<=$n;$i++){
            $a3 = $a1 + $a2;
            $a1 = $a2;
            $a2 = $a3;
        }
        return $a3;
}

/*阶乘*/
static function squre($n)
{
        if ($n<=1) return 1;/*递归法*/
        return $n * static::squre($n-1);

        /*循环法*/
        $int = 1; $res = 1;
        for ($i=2;$i<=$n;$i++){
            $res = $i * $int;
            $int = $res;
        }
        return $res;
}

 

以上是关于递归方式转迭代方式的主要内容,如果未能解决你的问题,请参考以下文章

代码随想录算法训练营第14天 | ● 理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代

二叉树:前中后序迭代方式的写法就不能统一一下么?

二叉树的遍历(递归+迭代)

二叉树的遍历(递归+迭代)

递归转换为迭代的一种通用方式

高次递归转换为迭代方式实现后 对计算效率的影响