查找一个数字是否是Scheme中2的幂

Eva*_*ker 3 scheme bitwise-operators

我对Scheme很新,我试图从头开始自学.我坚持这个问题的语法.我知道如果我想知道一个数字是2的幂,例如在C中,我只会这样做:

return (x & (x - 1)) == 0;
Run Code Online (Sandbox Code Playgroud)

这将返回真或假.我怎样才能将它转换成Scheme中的几个简单行?

And*_*ong 6

因为你正在努力学习这门语言,所以我会给你一个提示.

计划有一个调用的函数(bitwise-and ...),其等同于&在C运算符(也有(bitwise-xor ...),(bitwise-not ..)等等,这些做意料之中的事情).

(这是(bitwise-and ...)函数的文档)

鉴于此,您能否将您在问题中所写的内容翻译成Scheme代码?

注意:对于这样的问题,在使用Scheme时,你真的不需要求助于按位运算.实际上,你应该编写一个(可能是尾部)递归函数来为你计算.

  • 在我刷新页面并看到其余页面之前,我先看到了这一点,它确实有所帮助,所以非常感谢! (2认同)