开发者社区> 问答> 正文

请教各位php的函数表达式能递归吗?

有一个函数表达式

$make = function($std){};

如何实现递归?

$make = function($std){ $make($std);  };

排除这样的写法,不太优雅

$make = function($std, $make){ $make($std);  };
$make($std, $make);

展开
收起
落地花开啦 2016-06-14 13:56:15 1896 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人
    $f = function($x) use(&$f){
        if($x==0 || $x==1)
            return 1;
        return $f($x-1) + $f($x-2);
    };
    
    print $f(10);

    注意,use(&$f)这里必须用引用,否则会出错。
    use可以在定义匿名函数时,把外部的变量捕捉(值复制)到匿名函数内部。
    在这个例子中,在未完成赋值时,$f可以认为还不存在,这时捕捉的话,所捕捉的是一个未定义的变量。 所以我们要捕捉一个引用,这样在$f赋值完成后,匿名函数内部的$f也就指向匿名函数自身了。

    2019-07-17 19:37:26
    赞同 展开评论 打赏
问答分类:
PHP
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载