0

例如,我正在 Mozart-Oz 中编写一个返回数字镜像的函数

Mirror(1234) 将返回 4321

所以无论如何我都有想法,但我被困住了,因为我需要一个返回整数的位数(返回整数)的内置函数

我尝试了 {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}}
4

2 回答 2

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}}
于 2014-03-31T15:46:38.663 回答
0

您可以通过转换为字符串并获取其长度来找到位数:

  NumDigits = {Length {Value.toVirtualString Int 10 10}}

BTW,^运营商的奥兹有不同的含义。你可能想要这个Pow功能。

于 2014-03-28T15:27:38.330 回答