php - 匿名递归 PHP 函数

标签 php recursion lambda closures anonymous-function

是否可以有一个递归和匿名的 PHP 函数?这是我让它工作的尝试,但它没有传入函数名。

$factorial = function( $n ) use ( $factorial ) {
    if( $n <= 1 ) return 1;
    return $factorial( $n - 1 ) * $n;
};
print $factorial( 5 );

我也知道这是实现阶乘的不好方法,这只是一个示例。

最佳答案

为了让它工作,你需要传递 $factorial 作为引用

$factorial = function( $n ) use ( &$factorial ) {
    if( $n == 1 ) return 1;
    return $factorial( $n - 1 ) * $n;
};
print $factorial( 5 );

关于php - 匿名递归 PHP 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2480179/

相关文章:

php - 哪个会消耗更少的资源?使用编程语言的子查询或两个查询

java - 使用 lambda 创建包含空对象的 ArrayList

c# - 使用 All() 时 Lambda 表达式未返回正确结果

c++ - 链表、树等的递归析构函数不好吗?

c++ - 在 boost::spirit::qi 语法中处理深度递归的正确方法是什么?

c# - 如何检查 lambda 表达式中的日期是否为空,并仅在为空时才使用今天的日期

php - 从 "GET"index.php?id=XX 编辑 mysql 数据库

PHPMailer : Everything works fine for 4 months, 但突然 SMTP connect() 失败

php - 此查询是否安全,不会受到 sql 注入(inject)的影响?

c++ - 数论的C++代码问题