想象一下,我有一个函数printList
,它将列表作为一个参数,并在一个新行中逐个打印列表中的所有元素,然后列表中的位置,同时在它们之间有空格。
E.G
1: 4
2: 9
3: 12
如何在没有任何内置功能的情况下使用递归在F#中实现此功能?
我认为它可能看起来像这样,但我对int, unit
类型有问题。
let rec printList l = function
match l with
| [] -> 0
| head::tail -> // something
答案 0 :(得分:3)
我可以给你两个建议,以便你可以实现printList
功能:
printList
成为非递归函数并定义本地递归辅助函数,以便跟踪值的索引。match
表达式的所有分支必须返回相同的类型,此处您需要的是unit
type。如果您仍然遇到困难,我会提供以下解决方案。
let printList list =
let rec helper index list =
match list with
| [] -> ()
| head :: tail ->
printfn "%d: %A" index head
helper (index + 1) tail
helper 1 list