我正在尝试在SML中实现重复的平方算法。我希望它是尾递归。
目标是将所有x ^ k乘以其中k为2 ^ m且2 ^ m在n的二进制表示中为1。
例如,对于x ^ 25,计算x ^ 1 * x ^ 8 * x ^ 16,因为16 + 8 + 1 = 25
我不知道如何通过它的二进制部分来表示数字,或者使用按位运算来手动检查(因为我可以告诉SML没有按位操作)。
我更喜欢使用开箱即用的SML库,因此不需要导入其他库。
这是一个家庭作业的问题,所以如果你能在没有完全放弃的情况下回答那就太棒了。
编辑:我正在使用新泽西州的SML。
答案 0 :(得分:1)
感谢matt,我找到了解决方案。
使用SML基础库中的Word类型,我使用了:
Word.andb(Word.fromInt(x),Word.fromInt(y))> Word.fromInt(0)