订阅专栏新内容,十年老兵教你一套正宗的MySQL降龙十八掌,早鸟订阅还有书送,了解详情>>
0

我的帖子

个人中心

设置

  发新话题
看到别的论坛的帖子问到这个问题,觉得有点意思,分享给大家,各位看看哪种方式性能最好呀?

悬赏内容请见回复的答案下方!
// 递归
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]);
答案:
本帖隐藏的内容需要回复才可以浏览





本帖最后由 七彩极 于 2017-11-2 10:27 编辑
学习一下!



技术在于交流,欢迎参观博客 [http://http://blog.51cto.com/chenhao6]
学习




‹‹ 上一贴:【已解决】请教discuz批量导贴的方法   |   下一贴:【教程经验】超级链接中多重get参数的拼装问题+thinkp ... ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2018 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com