目录
基本概要
由于已经有优秀的循环迭代的题解了,这里就根据自己的思路发一个递归的解法
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头
- 根据 leetCode 介绍如下
下面采用递归方式求解
代码实现
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func addTwoNumbers(l1, l2 *ListNode) *ListNode {
if l1 == nil && l2 == nil {
return nil
}
if l1 == nil {
return l2
}
if l2 == nil {
return l1
}
val := l1.Val + l2.Val
next := addTwoNumbers(l1.Next, l2.Next)
if val < 10 {
return &ListNode{Val: val, Next: next}
} else {
node := &ListNode{Val: 1, Next: nil}
return &ListNode{
Val: val % 10,
Next: addTwoNumbers(next, node),
}
}
}
由于水平有限,只能解决,至于完成效率却不高