我对 Haskell 编程还很陌生,我无法理解为什么在我的代码中收到此错误。
我的问题如下:任何正整数 i 都可以表示为 i = 2^n*k,其中 k 是奇数,即奇数的 2 次幂。我们称 n 为 i 中 2 的指数。例如,40 中 2 的指数是 3(因为 40 = 2^3*5)而 42 中 2 的指数是 1。如果 i 本身是奇数,则 n 为零。另一方面,如果 i 是偶数,则意味着它可以被 2 整除。编写一个函数 exponentOfTwo 来查找其参数中 2 的指数。
我理解伪代码,它看起来相当简单:递归地将 i 除以 2 直到结果为奇数,除法发生的次数为 n
这是我的代码(第 31-32 行):
exponentOfTwo :: Int -> Int
exponentOfTwo i = if odd i then 0 else 1 + exponentOfTwo (i 'div' 2)
我在第 32 行第 62 列收到错误“字符 'i' 处的字符串/字 rune 字中的词法错误”。
我已经尝试在任何地方寻找解决此错误的方法,但到目前为止我没有运气。
最佳答案
要在中缀 for 中使用函数,请用反引号 (`) 将其括起来,而不是用单引号 (')。后者用于字 rune 字,它们只有一个字符长。
关于Haskell:字符 'i' 处的字符串/字 rune 字中的词法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4910017/