我正在尝试编写一个方法,该方法接受一个值N
并返回三个整数N/2
、N/3
和N/4
向下舍入。它不断地把它们带回来,直到只有零。
def crazy_coins(n)
coins = Array.new
coins.push(n.to_a)
generate = Proc.new { |x|
temp = []
count = 2
while count < 5
x = n/count
temp << x
count += 1
end
return temp
}
coins.map!(&generate)
end
输出:
crazy_coins(5)
# => [[2, 1, 1]]
成功的输出应该类似于:
crazy_coins(5)
11
=> [2, 1, 1]
=> [[1, 0, 0], [0, 0, 0], [0, 0, 0]]
=> [[[0, 0, 0], 0, 0], [0, 0, 0], [0, 0, 0]]
coins.map!
在 all 之前再次调用每个元素(可能是递归)的最佳方法可能是什么coins[i][j] == 0
?
我尝试调用 coin[0].map!(&generate) 但结果是 [[2, 1, 1], [2, 1, 1], [2, 1, 1]] 为什么它没有替换现有值有一个新的阵列?