首页 > 其他 > 详细

递归方式转迭代方式

时间:2020-04-29 13:05:10      阅读:56      评论:0      收藏:0      [点我收藏+]

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

/*斐波那契数列*/
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;
}

 

递归方式转迭代方式

原文:https://www.cnblogs.com/longfeiPHP/p/12801298.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!