Ruby 求解:stack level too deep

plasmiq · 2012年11月24日 · 最后由 plasmiq 回复于 2012年12月02日 · 2897 次阅读

是何道理?

def f(x)
  if x == 0 
    f(x)==0     #  return 0
  else
    f(x)==1     #  return 1
  end
end

puts "x="
x=gets().to_i
print f(x)

执行报错:stack level too deep

如果按注释中的写法,则没问题。

死循环了,你这个代码是书上看来的?

def f(x)
  if x == 0
    f(x)==0 # return 0 #這是一個判斷語句,只會返回 true 或者 false,但是運行這個語句需要重新調用 f 方法本身,也就是保存當前狀態,然後回到頂部重新運行,所以死循環了唄
  else
    f(x)==1 # return 1
  end
end



可以问下,楼主是从哪门编程语言过来的么?

弱弱地说:小时候学的 basic 和学校里学的 fortran 算么……

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