我编写了一个程序,它接收每天的股票价格数组,然后返回股票应该买进和卖出的日期。我有一个全局变量,$negatives
显示买卖日。我想返回这个全局变量作为我的puts语句的一部分。然而,目前,什么也没有出现。我没有看到我的看跌声明。知道是怎么回事吗?
def stock_prices array
$largest_difference = 0
array.each_with_index {|value, index|
if index == array.size - 1
exit
end
array.each {|i|
$difference = value - i
if ($difference <= $largest_difference) && (index < array.rindex(i))
$negatives = [index, array.rindex(i)]
$largest_difference = $difference
end
}
}
puts "The stock should be bought and sold at #{$negatives}, respectively"
end
puts stock_prices([10,12,5,3,20,1,9,20])
您的代码有几处错误。首先,exit
退出整个程序。你真正要找的是break
。除此之外,你甚至不需要那个检查,所以你应该删除
if index == array.size - 1
exit
end
作为循环将自动退出。
最后,如果你想让函数返回$difference
,你应该把$difference
放在函数的最后一行。
你的代码有更多的问题(似乎你有一个额外的循环,你应该使用do…结束多行块),但进入它们似乎更适合代码审查堆栈交换。