当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


PHP 匿名递归函数用法及代码示例


匿名递归函数是一种递归函数类型,其中函数不是通过名称显式调用另一个函数。这可以通过使用高阶函数传入函数作为参数,并调用该函数来完成。这也可以通过反射函数来隐式完成此操作,反射允许根据当前上下文(尤其是当前函数)访问某些函数。
在计算机科学理论中,匿名递归意义重大,因为匿名递归是一种递归类型,在这种类型中,人们可以实现递归而无需命名函数。

使用匿名递归:

  • 匿名递归主要用于允许匿名函数递归。
  • 特别是当它们形成闭包或用作回调时,避免绑定函数名称。

备择方案:


  • 使用命名递归和命名函数。
  • 如果给出了匿名函数,则可以通过将名称绑定到函数来完成匿名递归,如命名函数一样。

示例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


相关用法


注:本文由纯净天空筛选整理自Amaninder.Singh大神的英文原创作品 Anonymous recursive function in PHP。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。