You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现反向链表相加结果出现科学计数法问题求助

问题排查与修复:SumLists链表求和出现科学计数法输出

问题原因

  • 浮点数除法导致carry变为小数:Python3中/执行浮点除法,例如12/10得到1.0而非整数1。后续循环中,carry的小数会不断累积到digit中,导致插入链表的节点数据变为浮点数。
  • 循环无法正常终止:由于浮点数精度问题,carry永远无法精确等于0(比如0.91/10会得到0.091,继续除以10会得到更小的浮点数),循环会持续执行,不断插入极小的浮点数节点,最终输出大量科学计数法格式的数值。

修复方案

将求和函数中计算carry的浮点除法替换为整数除法(使用//运算符),确保carry始终为整数,循环能在carry为0时正常终止,同时保证所有插入的节点数据都是整数。

修复后的求和函数代码

def sumLists(self, ll2):
    curr1 = self.head
    curr2 = ll2.head
    sol = LinkedList()
    carry = 0 
    while curr1 is not None or curr2 is not None or carry != 0: 
        digit = carry 
        if curr1 is not None:
            digit += curr1.data
            curr1 = curr1.next
        if curr2 is not None:
            digit += curr2.data
            curr2 = curr2.next
        sol.insert(digit % 10)
        # 替换为整数除法,确保carry为整数
        carry = digit // 10
    return sol 

验证结果

修复后,测试代码的输出会变为:

7
1
6
5
9
2
2
1
9

完全符合预期的2->1->9结果。

内容的提问来源于stack exchange,提问作者Steven Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:01:05