从表示该整数的列表中生成整数值

时间:2015-02-06 09:14:50

标签: sml smlnj

您好我正在尝试用SML编写一个函数。我的目标是创建一个函数,该函数采用表示[2,3,4]等值的列表,并返回其整数表示,即432(在列表中第一个元素是那个位置)。

所以我的思路是将列表中的每个元素相互添加...乘以10 ^ n,其中n每次增加1

例如[2,3,4] - > 2 * 10 ^ 0 + 3 * 10 ^ 1 + 4 * 10 ^ 2 = 432 ..我不知道如何递归地执行此操作但这就是我所拥有的

fun List2Integer nil = 0
  | List2Integer (x::xs) = x * (power (10,1)) + (List2Integer xs);

我知道现在它不起作用,因为x总是乘以10 ^ 1,其中1不会增加。

感谢您抽出宝贵时间阅读本文..我将不胜感激任何提示

1 个答案:

答案 0 :(得分:1)

fun toInt [] = 0
  | toInt (x :: xs) = x + 10 * (toInt xs)

要从数字列表[a0, a1, a2, a3, ...]中计算出正确的数字,您只需计算总和a0 + a1*10 + a2*10*10 + a3*10*10*10 + ...。然后你可以左因子输出10并获得a0 + 10*(a1 + 10*(a2 + 10*(a3 + 10*(...))))形式的表达式,这正是上述函数的作用。