从表示该整数的列表中生成一个整数值
Making an integer value from a list that represents that integer
您好,我正在尝试用 SML 编写一个函数。我的目=11=]
所以我的思路是将列表中的每个元素相互相加..乘以 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 没有增加。
感谢您花时间阅读本文..我将不胜感激任何提示
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*(...))))
的表达式,这正是上面的函数所做的。
您好,我正在尝试用 SML 编写一个函数。我的目=11=]
所以我的思路是将列表中的每个元素相互相加..乘以 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 没有增加。
感谢您花时间阅读本文..我将不胜感激任何提示
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*(...))))
的表达式,这正是上面的函数所做的。