def reverse_append(arr, n)
return arr if n < 0
reverse_append(arr, n-1)
arr << n
arr
end
reverse_append([],4) #=> [0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
我似乎无法理解这种递归方法.它产生一个从0到n的数组.
谁可以给我解释一下这个?
reverse_append([],4)被调用4 >= 0,return语句不会被调用.reverse_append([],3)被调用.3 >= 0,return语句不会被调用.reverse_append([],2)被调用.2 >= 0,return语句不会被调用.reverse_append([],1)被调用.1 >= 0,return语句不会被调用.reverse_append([],0)被调用.0 >= 0,return语句不会被调用.reverse_append([],-1)被调用.-1 < 0,[]返回了array().n = 0和arr = [].arr << n和arr返回,所以现在arr = [0].n = 1和arr = [0].arr << n和arr返回,所以现在arr = [0, 1].n = 2和arr = [0, 1].arr << n和arr返回,所以现在arr = [0, 1, 2].n = 3和arr = [0, 1, 2].arr << n和arr返回,所以现在arr = [0, 1, 2, 3].n = 4和arr = [0, 1, 2, 3].arr << n和arr返回,所以现在arr = [0, 1, 2, 3, 4].