【发布时间】:2021-02-15 14:37:29
【问题描述】:
我编写了这个 sml 函数,它允许我显示 Ascii 表的前 5 列。
fun radix (n, base) =
let
val b = size base
val digit = fn n => str (String.sub (base, n))
val radix' =
fn (true, n) => digit n
| (false, n) => radix (n div b, base) ^ digit (n mod b)
in
radix' (n < b, n)
end;
val n = 255;
val charList = List.tabulate(n+1,
fn x => print(
"DEC"^"\t"^"OCT"^"\t"^"HEX"^"\t"^"BIN"^"\t"^"Symbol"^"\n"^
Int.toString(x)^"\t"^
radix (x, "01234567")^"\t"^
radix (x, "0123456789abcdef")^"\t"^
radix (x, "01")^"\t"^
Char.toCString(chr(x))^"\t"
)
);
但我希望标题:"DEC"^"\t"^"OCT"^"\t"^"HEX"^"\t"^"BIN"^"\t"^"Symbol" 在开始时只显示一次,但我做不到。有人知道怎么做吗?
另一方面,我不想递归调用“基数”函数。那可能吗?编写这个函数是否明智?
【问题讨论】:
标签: recursion iteration sml converters radix