【发布时间】:2016-12-17 04:28:32
【问题描述】:
我已经实现了我的代码,它基本上是在不使用模数运算符的情况下计算两个数字的余数,但是,我陷入了一种非常忙碌的情况。我知道逻辑但是我是 f# 的新手并且不知道如何实现它。
let rec modulus a b =
if b = 0 Console.WriteLine("Sorry Wrong Divisor")
let bool neg = a < 0
a = abs a
b = abs b
modulus(val-divisor,divisor)
我只知道我在这里遇到了一个非常基本的错误,任何帮助,
【问题讨论】:
-
编写的代码很难理解。缩进不正确,我怀疑等于运算符被滥用了
-
除了 Tomas Petricek 所指出的之外,您还创建了一个名为
neg的值(您无需在此处说let bool:let neg = a < 0就足够了)。但是您永远不会使用该值。您可能打算在某处有一个if声明。 F# 中的if语句写成if (condition) then (value-if-true) else (value-if-false)。仅当value-if-true解析为unit类型时,else才是可选的。如果您还不明白这意味着什么,请不要担心,只需记住if语句中的else部分几乎从来都不是可选的。