2011-04-23 42 views
2

這是F#代碼儘可能接近我可以寫入找到數組的最小值:如何從F#中的數組中獲取最小值?

let temp = 0 
let getArrayMinValue (a : Array) = 
    if a.Length > 0 then (
          for i = 0 to a.Length do 
           let temp = (if temp > a.[i] then a.[i] else temp) in()      
         ) 

我有兩個問題: 首先,A [1]已編譯錯誤:場,構造函數或成員'Item'未定義。

其次,在()被requried,否則,在編譯錯誤「塊以下這讓是未完成。期望的表達」。我不太明白這部分。

在此先感謝您的幫助。

回答

7

不能使用Array.min找到最小元素,類似下面:

let numbers =[|1..10|] 

printfn "%A" (numbers |> Array.min) 

來到你的程序,你必須使用類似:

let getArrayMinValue (a : int[]) = 

,而不是a: Array你甚至可以做a: 'T[],但由於您將元素的值與temp進行比較,因此可能會將其限制爲int。

出現其他錯誤,使臨時變量:let mutable temp = 0和使用<-運算符分配值。這裏是你的整個代碼:

let mutable temp = 0 


let getArrayMinValue (a : 'T[]) = 
    if a.Length > 0 then (
         for i = 0 to a.Length do 
          temp <- (if temp > a.[i] then a.[i] else temp) 
         ) 
相關問題