如何正确地将结果返回给调用函数:
arr_of_arr = [ [1,2,3], [4,5,6], [7,8,9] ]
def find_all(arr, pos, result)
if pos == arr.size
puts result
else
curr_set = arr[pos]
curr_set.each {|e|
find_all(arr, pos+1, result+e.to_s)
}
end
end
print find_all(arr_of_arr, 0, "")
此代码生成以下输出:
147 148 149 157 158 159 167 168 169 247 248 249 257 258 259 267 268 269 347 348 349 357 358 359 367 368 369 [1, 2, 3]
答案 0 :(得分:2)
而不仅仅是:
puts result
返回nil。
同样返回结果:
puts result
result
此外,您可能希望在each
语句中获取结果,例如:
curr_set.inject([]) { |res, e|
res.concat find_all(arr, pos+1, result+e.to_s)
res
}
(或者打破,如果那是你的意图 - 问题在这方面根本不清楚。)
最后,如果您打算使用print
语句对其进行调用,则使用puts
并不一定是您想要的:普通result
会这样做。