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 中国語 Web サイトの他の関連記事を参照してください。