我正在编写一个函数在Mozart-Oz中返回一个数字的镜像,例如
镜像(1234)将返回4321
所以无论如何我有这个想法,但我被卡住了因为我需要一个内置函数来返回一个整数的位数(返回一个整数)。 / p>
我尝试了{Length X}功能,但我不知道它返回了什么......
这是我的代码(不起作用)来理解我的问题的背景。
declare
fun {Mirror Int Acc}
if Int==0 then Acc
else {Mirror (Int div 10) (Int mod 10)*(10^({Length Int}-1))+Acc}end
end
{Browse {Mirror 1234 0}}
答案 0 :(得分:1)
我会这样做的:
declare
fun{Mirror X Y}
if X==0 then Y
else {Mirror (X div 10) (X mod 10)+Y*10}
end
end
{Browse {Mirror 1234 0}}
或者,如果您只想要一个参数:
declare
fun{Mirror X}
fun{Aux X Y}
if X==0 then Y
else {Aux (X div 10) (X mod 10)+Y*10}
end
end
in
{Aux X 0}
end
{Browse {Mirror 1234}}
答案 1 :(得分:0)
您可以通过转换为字符串并获取其长度来找到位数:
NumDigits = {Length {Value.toVirtualString Int 10 10}}
BTW,^
运算符与Oz具有不同的含义。您可能需要Pow
函数。