php的函数表达式能递归嘛?


有一个函数表达式


 $make = function($std){};

如何实现递归?


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

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


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

递归 php

破裂的人偶 10 years, 2 months ago

 $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也就指向匿名函数自身了。
(这话太绕了...)

歪歪-.- answered 10 years, 2 months ago

Your Answer