【发布时间】:2012-06-05 13:22:39
【问题描述】:
我正在尝试在 F# 中编写一个引导算法,该算法采用一组输入并创建一个输出列表。如果我只需要使用前一个元素,那么使用递归很简单:
let buildElement head previous =
// do something to create new float
1.0
let buildList inputs =
let rec bootstrap elements previous =
let addElement head tail =
let newElement = buildElement head previous
newElement :: bootstrap tail newElement
match inputs with
| [] -> []
| h::t -> addElement h t
bootstrap inputs 1.0
但是,如果我想使用以前创建的元素(例如,我想将新值的平均值作为以前的值传递),我如何在内部函数中访问它们?我是否在外部函数中创建一个集合并在内部函数中填充它?如果是这样,我需要使其可变吗?
【问题讨论】:
-
请注意,如果您切换
buildElement的参数,您的buildList函数只能定义为List.scan buildElement 1.0 inputs。 -
这是一个公平的观点。我只是想弄清楚原理,这只是实际代码的精简版。
标签: recursion f# functional-programming