【问题标题】:Subtract / Divide two lists of digits减/除两个数字列表
【发布时间】:2014-05-26 16:35:28
【问题描述】:

我想将数字表示为数字列表。即使它们的大小不同,如何加减和除以两个数字? 例如:100 - 12 = 88 等价于 (1 0 0) 减 (1 2) = (8 8) 100 / 12 = 8 等于 (1 0 0 ) 除以 (1 2 ) = (8)

【问题讨论】:

  • 在 Stack Overflow 上已经有关于这类问题的类似问题,即带有数字列表的算术。除了展示你的代码,你还应该看看那些。
  • 提及“即使它们的大小不同”表明您的代码可以处理相同长度的数字列表。如果是这种情况,那么(除了显示适用的代码之外),似乎更具体的问题只是“如何用数字填充列表,以便我现有的代码有效”?

标签: recursion lisp


【解决方案1】:

有两种方法可以将数字表示为十进制数字。假设我想代表数字123。一个明显的方法是从最重要的数字到最不重要的数字,如@9​​87654322@。那只适合演示。另一种方法是对最重要的(3 2 1) 做最少的事情。

在加减时,从最低有效数字开始加,如果总和大于 9,则进位(将其中一个数字的下一位加 1)并继续递归。

那么你知道怎么加长吗?如果是这样,这将是小菜一碟。 123 + 49(+ '(9 4) '(3 2 1)) ; ==> (2 7 1)。祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多