有一个函数表达式
$make = function($std){};
如何实现递归?
$make = function($std){ $make($std); };
排除这样的写法,不太优雅
$make = function($std, $make){ $make($std); }; $make($std, $make);
认证高级PHP讲师
$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)
use可以在定义匿名函数时,把外部的变量捕捉(值复制)到匿名函数内部。 在这个例子中,在未完成赋值时,$f可以认为还不存在,这时捕捉的话,所捕捉的是一个未定义的变量。 所以我们要捕捉一个引用,这样在$f赋值完成后,匿名函数内部的$f也就指向匿名函数自身了。 (这话太绕了...)
<?php function make($std) { if ($std < 0) return -1; if(($std == 0) || ($std == 1)) return $std; return make($std - 1) + make($std - 2); } for ($i = 1; $i < 20; ++$i){ echo make($i); echo " "; } ?>
这个斐波那契的递归计算给你做个参考哈。
php递归函数例子
我想楼主要的一定是这种东西。注意,
use(&$f)
这里必须用引用,否则会出错。use可以在定义匿名函数时,把外部的变量捕捉(值复制)到匿名函数内部。
在这个例子中,在未完成赋值时,$f可以认为还不存在,这时捕捉的话,所捕捉的是一个未定义的变量。 所以我们要捕捉一个引用,这样在$f赋值完成后,匿名函数内部的$f也就指向匿名函数自身了。
(这话太绕了...)
这个斐波那契的递归计算给你做个参考哈。
php递归函数例子