我对此实施有疑问。它给了我一个错误"这个表达式有类型bool但是这里有单位"在整个块上从第一个for循环开始,以pown表达式结束。
我不完全确定这意味着什么。
let rec detMat (m : int[,] ) : int =
let mutable det = 0
let mutable n = m.Length
let mutable i = 0
let mutable j = 0
let mutable j = 0
let mutable j1 = 0
let mutable j2 = 0
let mTmp = Array2D.create 0
if n = 1 then
det = m.[0, 0]
elif n = 2 then
det = m.[0, 0] * m.[1, 1] - m.[1, 0] * m.[0, 1]
else
det = 0
for j1 = 0 to n do
for i = 1 to n do
j2 = 0
for j = 0 to n do
if j <> j1 then
mTmp.[i-1, j2] <- m.[i, j]
j2 = j2 + 1
pown -1 (1 + j1 + 1) * m.[0, j1] * detMat(mTmp, n-1)
det
答案 0 :(得分:2)
<-
是可变变量的赋值运算符。
你的代码应该是
det <- m.[0, 0]
det <- m.[0, 0] * m.[1, 1] - m.[1, 0] * m.[0, 1]
j2 <- j2 + 1
=
是为了平等,这就是为什么你得到&#34;这个表达式有类型bool&#34;错误。第二部分,&#34;但这里有unit&#34;,表示编译器期望if
的一个臂返回最后一个表达式中的一个单元。仔细阅读此页面以了解错误消息为何如此混乱的原因:https://msdn.microsoft.com/en-us/library/dd233231.aspx