php 递归 实现
PHP 递归实现方法
递归是一种函数调用自身的技术,适用于解决分治或重复子问题的情况。以下是几种常见递归实现的示例:
阶乘计算

function factorial($n) {
if ($n <= 1) {
return 1;
}
return $n * factorial($n - 1);
}
echo factorial(5); // 输出120
斐波那契数列
function fibonacci($n) {
if ($n == 0 || $n == 1) {
return $n;
}
return fibonacci($n - 1) + fibonacci($n - 2);
}
echo fibonacci(10); // 输出55
目录遍历

function scanDirectory($dir) {
$files = scandir($dir);
foreach ($files as $file) {
if ($file != '.' && $file != '..') {
$path = $dir . '/' . $file;
if (is_dir($path)) {
scanDirectory($path); // 递归子目录
} else {
echo $path . "\n";
}
}
}
}
scanDirectory('/path/to/directory');
注意事项
- 递归必须包含基线条件(终止条件),否则会导致无限循环
- 深度过大的递归可能导致栈溢出,PHP默认调用栈深度约为100-200层
- 对于性能敏感场景,可考虑使用迭代替代递归
尾递归优化示例 PHP本身不支持尾调用优化,但可手动改写:
function factorial($n, $accumulator = 1) {
if ($n <= 1) {
return $accumulator;
}
return factorial($n - 1, $n * $accumulator);
}






