F#int - > int list递归函数

时间:2017-02-16 03:15:26

标签: function recursion f#

这里的F#总新手需要一些帮助。所以问题就是写一个函数

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 :: list上收到警告说“这个表达式应该有' unit'但是有类型' int list'。使用ignore丢弃结果等。

并在最后一行显示错误'此表达式应该具有类型int - > int list但这里有类型'列表'

我需要一些指导。第一个问题,在函数的声明中,应该是它的方式,使用n:int - > int列表?我应该删除n以便它读取

downTo : int -> int list
像问题陈述一样吗? 我一直试图研究几天,并且没有在任何地方看到这样的声明。我很困惑。感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

我认为你误解了列表是什么。你也不需要注释。

简单版

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