【问题标题】:F# int -> int list recursive functionF# int -> int 列表递归函数
【发布时间】:2017-02-16 03:15:26
【问题描述】:

这里是 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 但这里的类型是'a list'

我需要一些指导。第一个问题,在函数的声明中,它应该是这样的吗,使用 n : int -> int list?我是否应该删除 n 以使其显示为

downTo : int -> int list

喜欢问题陈述? 几天来我一直在尝试研究,但在任何地方都没有看到这样的声明。我很困惑。提前感谢您的帮助。

【问题讨论】:

    标签: function recursion f#


    【解决方案1】:

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

    一个简单的版本

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

    【讨论】:

    • 谢谢!是的,我似乎误解了很多。感谢您的帮助
    • downto 是关键字,有语法错误,所以编译不了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多