2017-02-16 80 views
2

新手到F#這裏總共需要一些幫助。所以這個問題說寫功能F#int - > int list遞歸函數

downTo : int -> int list 

這樣downTo n返回n元素列表[n; N-1; ...; 1]使用if-then-else然後模式匹配。

因此,這是我試過的IF-THEN-ELSE部分

let rec downTo n : int -> int list = 
    let list = [] 

    if n > 1 then 
     n :: list 
     downTo (n - 1) 
    else 
     list 

所以我得到以n ::列表中警告說,「這表達的類型應該是‘單位’但有類型'int list'。使用忽略丟棄結果等

,並在最後一行出現的錯誤「這種表達應該是int型 - > INT名單,但這裏的類型爲‘列表’

我需要一些指導。第一個問題,在函數聲明中,它應該是它的樣子,用n:int - > int list?我應該刪除n以便它讀取

downTo : int -> int list 

像是在問題聲明中嗎? 我一直在努力研究幾天,並沒有看到任何地方這樣的聲明。我很困惑。提前謝謝你的幫助。

回答

4

我想你錯誤地理解了列表是什麼。你也不需要註釋。

一個簡單的版本

let rec downto n = 
    if n > 0 then n :: (downto n-1) else [] 
+0

謝謝!是的,我似乎誤解了很多。感謝您的幫助 – jynx678

+0

downto是一個關鍵字,並且存在語法錯誤,所以不能編譯。 –

相關問題