关于链表添加元素的递归算法返回值问题

关于链表添加元素的递归算法返回值问题

bobo老师你好,用递归实现链表的增删改查作业中,我是先试着自己去实现了,我的add方法是这样的
// 在链表index位置添加元素
public void add(E e, int index) {
    if (index < 0 || index > size) {
        throw new IllegalArgumentException("Add is faild : The index is out of bounds");
    }
    Node pre = dummyHead;
    add(pre, e, index);
    size++;
}

// 在以head为虚拟头节点的index位置插入新元素
private void add(Node head, E e, int index) {
    // 基线条件
    if (index == 0) {
        head.next = new Node(e,head.next);
        return;
    }
    add(head.next, e, index - 1);
}

我是使用了虚拟头节点,这样的话递归算法就没有返回值,我在测试过程中也没有发现问题,想问老师这种写法是否有错,如果正确,推荐使用这种方法么?

在这里输入代码,可通过选择【代码语言】突出显



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

赞!是正确的:)


这几种写法都可以,并没有特别的推荐,并且你很清晰地了解自己的逻辑到底是怎样的,同时逻辑是正确的。


在这一章,我们主要是通过链表,初步接触递归,递归在程序的世界里无处不在。在以后,你遇到的递归函数设计,可能会有使用返回值更方便的情况。到时候,了解递归函数也是可以有返回值的,就好啦:)


对于这两种写法,在这个课程介绍 BST 的时候,我可能还会再提到:)


继续加油!:)

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2594    人
  • 解答问题       1091    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师