我对 Scheme 还很陌生,我正在尝试从头开始自己学习它。我被困在这个问题的语法上。我知道如果我想知道一个数字是否是 2 的幂,例如在 C 语言中,我会这样做:
return (x & (x - 1)) == 0;
这将返回真或假。我怎样才能将其转换为 Scheme 中的几行简单的行?
最佳答案
既然你正在努力学习这门语言,我会给你一个提示。
Scheme 有一个名为 (bitwise-and ...)
的函数,它相当于 C 中的 &
运算符(还有 (bitwise-xor ...)
、(bitwise-not ..)
等,它们做的是预期的事情。
(这里是 (bitwise-and ...)
函数的文档)
鉴于此,您能否将您在问题中写的内容翻译成 Scheme 代码?
N.B:对于这样的问题,你真的不需要在使用 Scheme 时使用按位运算。实际上,您应该编写一个(可能可能是尾)递归函数来为您计算。
关于scheme - 在Scheme中查找一个数字是否是2的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675086/