怎样算尾递归?

伟洪winni 2017-10-10 04:08:09

// 递归
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);
}
}
//例子不一定正确

尾递归是返回自身函数,并且没有其它数值(像+$num)?
...全文
233 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
木乄木 2017-10-12
  • 打赏
  • 举报
回复
弱弱的问一下,php中尾递归是没有效果的吧
xuzuning 2017-10-10
  • 打赏
  • 举报
回复
从形式上讲对的
伟洪winni 2017-10-10
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
值的是不对地规范回值做除返回外的其他处理 尾递归都可简单的化为循环
// 普通递归 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); } } 这个尾递归例子是正确的吗?
伟洪winni 2017-10-10
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的 尾递归函数的特点是在回归过程中不用做任何操作
尾递归函数的特点是在回归过程中不用做任何操作 指的是没有其它数值,单单调用自己?
xuzuning 2017-10-10
  • 打赏
  • 举报
回复
值的是不对地规范回值做除返回外的其他处理 尾递归都可简单的化为循环
xuzuning 2017-10-10
  • 打赏
  • 举报
回复
如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的 尾递归函数的特点是在回归过程中不用做任何操作

20,359

社区成员

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

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