Ruby 如何在递归方法中返回具有累积值的数组
我试图获取两个值Ruby 如何在递归方法中返回具有累积值的数组,ruby,recursion,Ruby,Recursion,我试图获取两个值times和number,并返回一个numberrepeatedtimes的数组。以下是一个例子: replicate(3, 5) # => [5, 5, 5] 以下是我的尝试1: @array = [] def replicate(times, number) return [] if times <= 0 @array << number replicate(times - 1, number) @array end 以下是实施
times
和number
,并返回一个number
repeatedtimes
的数组。以下是一个例子:
replicate(3, 5) # => [5, 5, 5]
以下是我的尝试1:
@array = []
def replicate(times, number)
return [] if times <= 0
@array << number
replicate(times - 1, number)
@array
end
以下是实施方案二:
def replicate(times, number)
return [] if times <= 0
array = []
array << number
replicate(times - 1, number)
array
end
def复制(次数、数量)
如果times将累加器数组传递给递归调用,则返回[]:
def replicate(times, number, array=[])
return [] if times <= 0
array << number
replicate(times - 1, number, array)
array
end
replicate(3, 5)
=> [5, 5, 5]
def replicate(次数、数量、数组=[])
return[]if times在这种情况下,不需要将累加器保留为实例变量或参数。您只需将此调用的结果(将是一个包含单个元素的数组,即[number]
)与后续调用的结果连接起来:
def replicate(times, number)
return [] if times <= 0
[ number ] + replicate(times - 1, number)
end
def复制(次数、数量)
返回[]如果次数为什么不简单地执行以下操作:
[number]*times
例如:
$ irb
2.3.0 :001 > [1]*5
=> [1, 1, 1, 1, 1]
尝试将数组传递到递归函数定义中。这是一种常见的模式。这有个名字吗?累加递归是一种叫它的方法。这是一个更好的答案。谢谢,@NicNilov。你的解决方案也很好。对不起,有人否决了它(
[number]*times
$ irb
2.3.0 :001 > [1]*5
=> [1, 1, 1, 1, 1]