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
这是我的示例输出:
"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
有人可以帮我理解这段代码吗?我无法理解为什么最后一行“你好”被打印四次。这是一个递归,只有i
等于4才能打印“你好”。
答案 0 :(得分:2)
“你好”打印4次,因为你在外面调用一次,然后再由于递归调用3次。所有的函数调用都必须退出,所以你可以打印hello。
至于为什么i
没有值4 - i
的范围仅限于方法。该方法被调用4次,4个不同的整数初始化为零并递增1。