在 PHP 中实现匿名递归函数
开始在 PHP 中编写递归函数的任务时,人们可能会渴望用匿名来掩盖它们。然而,当尝试将函数名称作为参数传递给自身时,就会出现一个陷阱,如下面的代码所示。
<code class="php">$factorial = function( $n ) use ( $factorial ) { if( $n <= 1 ) return 1; return $factorial( $n - 1 ) * $n; }; print $factorial( 5 );</code>
这种努力将被证明是徒劳的,给您留下一个挥之不去的问题:PHP 可以吗?函数既可以递归又可以匿名?
答案在于理解变量引用的机制。要建立递归连接,函数必须保存对其自身的引用。这可以通过使用“&”运算符将函数作为引用传递来实现。以下是此修改如何解锁匿名递归的示例:
<code class="php">$factorial = function( $n ) use ( &$factorial ) { if( $n == 1 ) return 1; return $factorial( $n - 1 ) * $n; }; print $factorial( 5 );</code>
通过此调整,PHP 函数超越了匿名的界限,无缝地运用了其递归功能。
以上是## PHP 函数可以同时是递归函数和匿名函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!