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

mizuhashi · November 29, 2015 · Last by Mark24 replied at June 15, 2022 · 3504 hits

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?)的话调用栈应该是能看的吧

You need to Sign in before reply, if you don't have an account, please Sign up first.