我正在尝试在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 of New Jersey。