求1到N的和

伟洪winni 2017-10-11 11:02:43

// 递归
function Add($num)
{
switch ($num) {
case 1:
return $num;
default:
return $num + Add($num - 1);
}
}

//尾递归
function Add2($num, $result = 0)
{
switch ($num) {
case 0:
return $result;
default:
return Add2($num - 1, $result + $num);
}
}

//迭代
function Add3($num)
{
$result = 0;
while ($num != 0) {
$result += $num;
$num--;
}
return $result;
}

//回调
function AddFunc($num, $result = 0)
{
if ($num == 0) {
return $result;
}
return function () use ($num, $result) {
return AddFunc($num - 1, $result + $num);
};
}

function Add4($callback, $num)
{
$result = call_user_func_array($callback, $num);
while (is_callable($result)) {
$result = $result();
}
return $result;
}

echo Add(n);
echo Add2(n);
echo Add3(n);
echo Add4('AddFunc', [n]);

请问哪个性能比较好?第四种方法名称是叫回调吗?
...全文
989 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
QCCC 2017-11-01
  • 打赏
  • 举报
回复
进来学习~!
伟洪winni 2017-10-31
  • 打赏
  • 举报
回复
nanyue2004 2017-10-14
  • 打赏
  • 举报
回复
路过 学习了。
xiaobaicaidage 2017-10-13
  • 打赏
  • 举报
回复
array_sum(range(1,100))
qian296573575 2017-10-12
  • 打赏
  • 举报
回复
return function () use ($num, $result) {         return AddFunc($num - 1, $result + $num);     };
qian296573575 2017-10-12
  • 打赏
  • 举报
回复
为什么回掉我看不懂呢?
木乄木 2017-10-12
  • 打赏
  • 举报
回复
追求性能的话
function add($n) {
    return  ($n+1)*$n/2;
}
这样比较好吧
xuzuning 2017-10-11
  • 打赏
  • 举报
回复
吃力的环节越少、消耗的内存越少,效率越高 显然是迭代效率最高
hongmei85 2017-10-11
  • 打赏
  • 举报
回复
最快是function add(n){retrun n(n+1)/2}

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧