我正在尝试在 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。
感谢马特,我找到了解决方案。
使用 SML 基础库中的 Word 类型,我使用了:
Word.andb(Word.fromInt(x), Word.fromInt(y)) > Word.fromInt(0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)