else 语句之前的行显然期待一个单位,但却得到一个 bool 值。我刚开始使用 F#,但无法理解这一点。
由于我以前从未使用过 Stackoverflow,所以我有点与布局作斗争,而且代码框仍然让我感到困惑!我相信原件中的间距是正确的。
let m = Dictionary<int, int>()
let rec fib i =
match i with
| 1 -> i
| 0 -> i
| _ ->
if m.ContainsKey(i) then
if m.[i] > 0 then
m.[i]
else
let x = fib(i - 1) + fib(i - 2)
m.Add(i, x)
m.[i]
如果有人能告诉我如何在这些帖子中保持间距,我将不胜感激!
最佳答案
最后一点有点不对——应该是
if m.ContainsKey(i) then
if m.[i] > 0 then
m.[i]
else
let x = fib(i - 1) + fib(i - 2)
m.Add(i, x)
x
您正在从 if 语句中返回。您可能也不需要 if m.[i] > 0
。在这种情况下,您会得到
let m = Dictionary<int, int>()
let rec fib i =
match i with
| 1 -> i
| 0 -> i
| _ ->
if m.ContainsKey(i) then
m.[i]
else
let x = fib(i - 1) + fib(i - 2)
m.Add(i, x)
m.[i]
要在 Stackoverflow 上进行格式化,只需将代码粘贴进去,然后高亮显示并按 ctrl+k 或点击 {}
按钮即可自动将该部分置于代码模式(代码在普通文本之后缩进四个空格)
关于f# - 谁能告诉我这个 F# 片段有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13641953/