通过对斐波那契数列和阶乘把递归转循环(是不是所有递归都可以转为循环?)
/*斐波那契数列*/ 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; }