【发布时间】:2015-09-20 01:31:45
【问题描述】:
我正在尝试编写一个程序,该程序将读取一个数字,然后将该数字的每个数字输出到一个列表中。但是,在我尝试使用数字 8 和 9 之前,大多数情况看起来都很好。程序只输出 \b \t 而不是。
如果输入的数字包含8或9,同时还有其他数字,例如283,则正常打印。否则,如果只有 8 或 9,例如8、99,那么它将给我 8 和 9 的二进制表示(如果我没记错的话)。
我的程序如下:digitize(0)-> 0;digitize(N) when N < 10 -> [N];digitize(N) when N >= 10 -> digitize(N div 10)++[N rem 10].
【问题讨论】:
-
你不需要第一个子句,事实上如果你传递一个 0 它会返回错误的结果:
digitize(0)应该返回[0],但是由于那个子句它返回0.如果您放弃该条款并保留其他两个条款,您会得到正确的答案。此外,您不需要对最后一个子句进行保护,因为之前的N < 10已经为最后一个子句留下了大于或等于 10 的所有内容。 -
@SteveVinoski 是的,感谢您的提示! =)
-
很好,我遇到了同样的问题。
标签: erlang