匿名递归函数是一种递归函数类型,其中函数不是通过名称显式调用另一个函数。这可以通过使用高阶函数传入函数作为参数,并调用该函数来完成。这也可以通过反射函数来隐式完成此操作,反射允许根据当前上下文(尤其是当前函数)访问某些函数。
在计算机科学理论中,匿名递归意义重大,因为匿名递归是一种递归类型,在这种类型中,人们可以实现递归而无需命名函数。
使用匿名递归:
- 匿名递归主要用于允许匿名函数递归。
- 特别是当它们形成闭包或用作回调时,避免绑定函数名称。
备择方案:
- 使用命名递归和命名函数。
- 如果给出了匿名函数,则可以通过将名称绑定到函数来完成匿名递归,如命名函数一样。
示例1:
<?php
// PHP program to illustrate the
// Anonymous recursive function
$func = function ($limit = NULL) use (&$func) {
static $current = 10;
// if condition to check value of $current.
if ($current <= 0) {
//break the recursion
return FALSE;
}
// Print value of $current.
echo "$current\n";
$current--;
$func();
};
// Function call
$func();
?>
输出:
10 9 8 7 6 5 4 3 2 1
示例2:
<?php
// PHP program to illustrate the
// Anonymous recursive function
$factorial = function( $num ) use ( &$factorial ) {
// Base condition of recursion
if( $num == 1 )
return 1;
// return statement when $m is not equals to 1.
return $factorial( $num - 1 ) * $num;
};
// Function call
print $factorial( 6 );
?>
输出:
720
相关用法
- PHP Ds\Map put()用法及代码示例
- PHP Ds\Map sum()用法及代码示例
- PHP Ds\Map xor()用法及代码示例
- p5.js hue()用法及代码示例
- PHP Ds\Map last()用法及代码示例
- CSS rgb()用法及代码示例
- PHP Ds\Set last()用法及代码示例
- PHP each()用法及代码示例
- PHP Ds\Set first()用法及代码示例
- PHP Ds\Map get()用法及代码示例
注:本文由纯净天空筛选整理自Amaninder.Singh大神的英文原创作品 Anonymous recursive function in PHP。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。