首页 > 解决方案 > 十进制数字自然数的语义

问题描述

下面的例子是在一本关于软件工程的书中。我无法理解这种态射如何将十进制数字转换为等效的自然数。它不只是将所有数字相加吗?


让 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 “不知何故”是自然数,从左到右,对应于十进制数字零、一、二、三、四、五、六,七,八,九;然后

type
    <NatNum> ::= <DecDig> | <DecDig> <NatNum>
    <DecDig> ::= zero | one | two | three | ... | nine


value
    M: <NatNum> -> Num
    M(d,n)≡10*M(d)+M(n)
    M(d)≡case d of zero->0,one->1,...,nine->9 end

非正式地解释自然数的含义


态射区分仅是小数的自然数和由小数和自然数组合而成的自然数。感谢您的帮助。

标签: computer-science

解决方案


这实际上是:

n = 0
for digit in number:
    n = n * 10
    n = n + digit
return n

推荐阅读