我想在SML中实现一个重复的平方算法。我希望它是尾递归。如何检查标准ML中的整数的基数2表示?
目标是乘以所有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没有任何按位运算符,sml基础库有一个“基本类型”,它具有执行按位运算的功能 – matt
你能告诉我在哪里寻找按位AND吗? –
当然,对不起,如果我之前太模糊http://sml-family.org/Basis/word.html#SIG:WORD.andb:VAL – matt