【发布时间】:2010-03-02 00:49:31
【问题描述】:
我正在通过 Project Euler 学习 F# 的原理,并多次遇到以下问题。我编写了一个函数,在 F# 交互窗口中运行它,程序就挂在那里了。我怀疑该功能失败了,但我没有收到任何可以帮助我找出问题所在的重要错误消息。有什么方法可以调试在 F# 交互中运行的程序?
作为说明,这里有一个来自问题 12 的示例。 FindFirstTriangle(0,0,100) 运行良好,但是当除数约为 150 时,事情就卡住了。
注意:这不是关于这段代码有什么问题,而是关于如何找出问题所在!
let NumberOfDivisors n =
[1 .. n] |> List.filter (fun i -> n % i = 0) |> List.length;;
let HasMoreThanDDivisors n d =
if NumberOfDivisors n >= d then
true
else
false
let rec FindFirstTriangle (index, number, divisors) =
if HasMoreThanDDivisors number divisors then
number
else
let nextIndex = index + 1
let nextNumber = number + index
FindFirstTriangle (nextIndex, nextNumber, divisors);;
【问题讨论】:
标签: debugging f# f#-interactive