递归:单链表求和

Posted 我家大宝最可爱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归:单链表求和相关的知识,希望对你有一定的参考价值。

链表遍历求和

  • 递去:原问题是对链表所有元素求和,即sum([1,2,3,4,5,6,7]),子问题是对链表部分求和,即sum([2,3,4,5,6,7])。为了求解sum([2,3,4,5,6,7]),我们需要先求出子问题sum([3,4,5,6,7]),不断的递去,直到问题规模无法缩减,即到达了终止条件。
  • 归来:当到达终止条件之后,我们已经有了最最最最小子问题的解了,然后不断的返回,在这样就可以得到最最最小子问题的解,然后层层返回,不断得到子问题的解,一直到最后一层。

    可以将整个递归过程展开来看

    最终实现的代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def listSum(self, head: ListNode) -> List[int]:
        if head is None:
            return 0
        s = self.listSum(head.next) + head.val # 子问题
        return s # 其他逻辑

以上是关于递归:单链表求和的主要内容,如果未能解决你的问题,请参考以下文章

算法练习2之单链表求和

单链表逆置

单链表就地逆置的两种方法(递归与普通循环)

Java面试题目-单链表翻转(递归+非递归实现)

单链表的逆置使用递归算法出现-842150451这个值,请求高手予以解决。。

单链表的逆置使用递归算法出现-842150451这个值,请求高手予以解决。。