0

我编写了一个程序,它每天接收一系列股票价格,然后返回应该买入然后卖出股票的日期。我有一个全局变量,$negatives显示买卖日。我想将此全局变量作为 puts 语句的一部分返回。但是,目前,什么都没有出现。我没有看到我的 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])
4

1 回答 1

2

您的代码有一些问题。首先,exit退出整个程序。你真正要找的是break. 除此之外,您甚至不需要该检查,因此您应该删除

if index == array.size - 1
    exit
end

因为循环会自动退出。

最后,如果你想让函数返回$difference,你应该放在$difference函数的最后一行。

您的代码存在更多问题(似乎您有一个额外的循环,并且您应该使用 do...end 来处理多行块),但进入它们似乎更适合Code Review Stack Exchange

于 2015-08-18T17:49:19.907 回答