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

链表元素求和函数异常:逆序存储数字的链表计算结果不符

问题分析与修正

你的代码出错的核心原因是Python中^是按位异或运算符,不是幂运算符号,这导致你计算10的counter次方的逻辑完全错误。

错误细节验证:

  • 当只有值为5的节点时,counter=0,10^0的结果是10(按位异或:10的二进制1010和0的0000异或后还是1010,即十进制10),所以5*10=50,和你得到的结果一致。
  • 当有5和4两个节点时:
    • 第一次循环:counter=0,5*(10^0)=5*10=50
    • 第二次循环:counter=1,10^1的结果是11(二进制1010^0001=1011,十进制11),所以4*11=44
    • 总和50+44=94(你提到的91可能是笔误,但核心错误是运算符使用错误)

修正代码:

把10^counter替换为Python中表示幂运算的10**counter(或者pow(10, counter))即可:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

head = ListNode(5)
head.next = ListNode(4)

def sum_number(l1):
    n_sum = 0
    counter = 0
    while l1:
        n_sum += l1.val * (10**counter)  # 用**代替^实现幂运算
        l1 = l1.next
        counter += 1
    return n_sum

print(sum_number(head))  # 输出45,对应逆序链表表示的数字45

验证结果:

  • 当只有值为5的节点时,sum_number返回5(5*10**0=5*1=5),符合预期。
  • 当有5和4两个节点时,返回45(5*1 +4*10=45),正确对应逆序链表代表的数字。

内容的提问来源于stack exchange,提问作者Lúcio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:45:14