瞎扯淡 为什么 Ruby 不支持尾递归优化

mizuhashi · 2015年11月29日 · 最后由 Mark24 回复于 2022年06月15日 · 3503 次阅读

Elixir:

def a do
  do_sth
  a
end

Ruby:

def a
  do_sth
  a
end

def do_sth
  def a
    'modifying a'
  end
end

Elixir: GG


#2 楼 @lgn21st 居然被大神回帖了 😂 😃

#3 楼 @sxk 学到了新知识,当然要感谢了。顺便还找到了一篇文章 http://nithinbekal.com/posts/ruby-tco/

#1 楼 @sxk 确实奈斯,我原来觉得尾递归优化要把方法体改写成迭代,实际上只需要把调用改写成迭代,方法体变化没有影响的

谢谢楼上几位的分享,另外我想知道 Ruby 中 lambda 表达式有办法尾递归么?

#5 楼 @lgn21st 这篇文章开头就把“Tail Call”与“Tail Recursion”搞混了……

py 的创始人反对 TCO,但是只优化尾递归(可以叫 TRO?)的话调用栈应该是能看的吧

需要 登录 后方可回复, 如果你还没有账号请 注册新账号