博客列表 >0806-请实例演绎你对回调函数与递归函数的理解?

0806-请实例演绎你对回调函数与递归函数的理解?

马勇*JackMa
马勇*JackMa原创
2021年08月07日 14:55:46410浏览

回调函数

  1. //命名函数作为回调函数
  2. function sum($n){ //数组求和
  3. $result = 0;
  4. for($i = 0;$i<count($n);$i++) $result += $n[$i];
  5. return $result;
  6. }
  7. function printArr($arr,$callback){ //打印数组中每一项的值,并利用回调函数求和
  8. foreach($arr as $value) echo $value.'<br>';
  9. return $callback($arr);
  10. }
  11. echo '求和结果为:'. printArr([1,89,34],'sum');
  12. ob_clean();
  13. //匿名函数作为回调函数
  14. $sum = function ($n){ //数组求和
  15. $result = 0;
  16. for($i = 0;$i<count($n);$i++) $result += $n[$i];
  17. return $result;
  18. } ;
  19. echo '求和结果为:'. printArr([1,89,34],$sum);

在网络请求或执行复杂业务逻辑时,需要耗费大量的时间,有可能会造成线程阻塞,影响代码的执行效率,就需要用使用系统提供的call_user_func()或者call_user_func_array()来执行回调

  • call_user_func(‘callback’,’参数1’,’参数2’,…);
  • call_user_func_array(‘callback’,[‘参数1’,’参数2’]);

递归函数

  1. //求3-100之间的正整数之和
  2. $count = 0;
  3. function compSum($n1,$n2){
  4. global $count;
  5. if($n1 <= $n2 ){
  6. $count += $n1;
  7. compSum(++$n1,$n2);
  8. }
  9. return $count;
  10. }
  11. echo '3到100之和:'.compSum(1,100);
  12. //递归的思维还有待提升,很容易把人绕晕,我这个递归的demo有点太牵强
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议