Ruby递归:得到一些奇怪的输出。!
这是我的示例输出:Ruby递归:得到一些奇怪的输出。!,ruby,recursion,Ruby,Recursion,这是我的示例输出: class Array def total_zeros index = entries.length-1, total = 0 p "total entries = #{entries.length}" i = 0 if index >= 0 p "in if block" i = i+1 total_zeros index-1, total end p "hello #{i}" end
class Array
def total_zeros index = entries.length-1, total = 0
p "total entries = #{entries.length}"
i = 0
if index >= 0
p "in if block"
i = i+1
total_zeros index-1, total
end
p "hello #{i}"
end
end
a = [0,1,2]
p a.total_zeros
有人能帮我理解这个代码吗?我不明白为什么最后一行hello会被打印四次。这是一个递归,当i等于4时,hello只应打印一次。hello打印4次,因为您在外部调用它一次,然后由于递归再打印3次。所有函数调用都必须退出,因此当它退出时,您会得到一个hello的打印
至于为什么我没有值4,我的范围仅限于方法。该方法被调用4次,4个不同的整数被初始化为零并递增1。条目将为您提供数组中的值。我认为它是ruby变量。好的..它是一个方法。。。我明白了:你只想数一数数组中0的总数吗?不,我想了解ruby是如何执行这段代码的,以及为什么我会得到这样的输出。!这是你写的还是你在某个地方找到的,你正在试图理解它?4个不同的整数被初始化为零?整数是立即数,因此从不初始化。
"total entries = 3"
"in if block"
"total entries = 3"
"in if block"
"total entries = 3"
"in if block"
"total entries = 3"
"hello 0"
"hello 1"
"hello 1"
"hello 1"
nil