有一个函数表达式
$make = function($std){};
如何实现递归?
$make = function($std){ $make($std); };
排除这样的写法,不太优雅
$make = function($std, $make){ $make($std); };
$make($std, $make);
$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也就指向匿名函数自身了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。