| Total Complexity | 2 |
| Total Lines | 32 |
| Duplicated Lines | 0 % |
| Coverage | 0% |
| Changes | 0 | ||
| 1 | <?php |
||
| 15 | class Magic |
||
| 16 | { |
||
| 17 | /** |
||
| 18 | * 消除尾递归. |
||
| 19 | * |
||
| 20 | * @param callable $callback 使用匿名函数尾调用的函数 |
||
| 21 | * @param array $params 函数参数 |
||
| 22 | * |
||
| 23 | * @example |
||
| 24 | * |
||
| 25 | * 以斐波那契函数为例子 |
||
| 26 | * function factorial($n, $accumulator = 1) |
||
| 27 | * { |
||
| 28 | * if (0 == $n) { |
||
| 29 | * return $accumulator; |
||
| 30 | * } |
||
| 31 | * return function () use ($n, $accumulator) { |
||
| 32 | * return factorial($n - 1, $accumulator * $n); |
||
| 33 | * }; |
||
| 34 | * } |
||
| 35 | * Magic::tailRecursion('factorial', array(100)); |
||
| 36 | * |
||
| 37 | * @return mixed |
||
| 38 | */ |
||
| 39 | public static function tailRecursion($callback, $params) |
||
| 49 |