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]
我似乎无法理解这种递归方法。它生成一个从 0 到 n 的数组。
谁可以给我解释一下这个?
- 方法
reverse_append([],4)
叫做
- Since
4 >= 0
, the return
声明不会被调用。
- 方法
reverse_append([],3)
叫做。
- Since
3 >= 0
, the return
声明不会被调用。
- 方法
reverse_append([],2)
叫做。
- Since
2 >= 0
, the return
声明不会被调用。
- 方法
reverse_append([],1)
叫做。
- Since
1 >= 0
, the return
声明不会被调用。
- 方法
reverse_append([],0)
叫做。
- Since
0 >= 0
, the return
声明不会被调用。
- 方法
reverse_append([],-1)
叫做。
- Since
-1 < 0
,数组([]
)被返回。
- 我们在调用堆栈中弹出一层,到哪里
n = 0
and arr = []
.
-
arr << n
and arr
已返回,所以现在arr = [0]
.
- 我们在调用堆栈中弹出一层,到哪里
n = 1
and arr = [0]
.
-
arr << n
and arr
已返回,所以现在arr = [0, 1]
.
- 我们在调用堆栈中弹出一层,到哪里
n = 2
and arr = [0, 1]
.
-
arr << n
and arr
已返回,所以现在arr = [0, 1, 2]
.
- 我们在调用堆栈中弹出一层,到哪里
n = 3
and arr = [0, 1, 2]
.
-
arr << n
and arr
已返回,所以现在arr = [0, 1, 2, 3]
.
- 我们在调用堆栈中弹出一层,到哪里
n = 4
and arr = [0, 1, 2, 3]
.
-
arr << n
and arr
已返回,所以现在arr = [0, 1, 2, 3, 4]
.
- 最后,“顶级”方法返回,我们得到了最终结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)