【问题标题】:How to convert ints to strings in SML recursively?如何递归地将整数转换为 SML 中的字符串?
【发布时间】:2021-05-17 05:44:01
【问题描述】:

我做了一个非常小的程序,它接受一个 int 并将其转换为 SML 中的字符串:

fun int2str i =
    if i < 0 then "~" ^ Int.toString (~i) else Int.toString i;


int2str(~1234) --> "~1234"
int2str(1234)  --> "1234"

我一直在努力以递归方式完成此任务。有什么帮助吗?此外,我必须接受一个字符串并将其转换为我通常通过 stackOverflow 帮助完成的 int,但 '~' 也将所有内容都搞砸了;然而,这可以递归地完成。任何帮助将不胜感激!

【问题讨论】:

    标签: recursion sml


    【解决方案1】:

    我不完全确定您为什么需要递归执行此操作,因为在任何 int 上调用 Int.toString 都会产生所需的结果(即使它是负数),但您也可以这样做:

    fun helper 0 = "" | helper n = helper (Int.div(n, 10)) ^ Int.toString (Int.mod (n, 10));
    
    fun int2str n = if n < 0 then "~" ^ helper(~n) else if n = 0 then "0" else helper(n);
    

    除以 10 将得到最后一位数字,整数除以 10 将切断最后一位数字,因此这应该以递归方式获得您想要的结果。

    【讨论】:

      猜你喜欢
      • 2013-02-02
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 2015-07-14
      • 2017-07-11
      • 1970-01-01
      • 2015-11-27
      相关资源
      最近更新 更多