我在for循环中运行了一个while循环。该数组的长度为9,我已经仔细检查了程序中的长度。 for循环应该为数组中的每个元素运行,而是仅针对第一个元素运行并结束。另一方面,while循环也使用数组的长度,并按预期运行。各种'放置'语句在运行代码时显示。为什么for循环运行9次?
def stock_picker(stock_prices)
differences = Array.new
stock_prices.each do |price|
day = 0
puts "The for loop is starting"
while day < stock_prices.length
puts "The while loop is working"
puts price
if price < stock_prices[day]
puts "The if statement is working"
difference = stock_prices[day] - price
puts difference
differences.push(difference)
puts differences
end
day += 1
end
puts "The for loop is ending"
end
puts differences
end
答案 0 :(得分:0)
如果您正在寻找最佳交易,您可以使用combination
方法查找和测试可能的买/卖对,并使用max_by
获得最佳利润:
def best_theoretical_trade(prices)
prices.combination(2).max_by do |buy,sell|
sell - buy
end
end
best_theoretical_trade([17, 3, 6, 9, 15, 8, 6, 1, 10])
# => [3, 15]
这里以3买入并以15卖出是最佳策略。