关于链表添加元素的递归算法返回值问题
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); }
我是使用了虚拟头节点,这样的话递归算法就没有返回值,我在测试过程中也没有发现问题,想问老师这种写法是否有错,如果正确,推荐使用这种方法么?
在这里输入代码,可通过选择【代码语言】突出显
示
35
收起
正在回答
1回答
赞!是正确的:)
这几种写法都可以,并没有特别的推荐,并且你很清晰地了解自己的逻辑到底是怎样的,同时逻辑是正确的。
在这一章,我们主要是通过链表,初步接触递归,递归在程序的世界里无处不在。在以后,你遇到的递归函数设计,可能会有使用返回值更方便的情况。到时候,了解递归函数也是可以有返回值的,就好啦:)
对于这两种写法,在这个课程介绍 BST 的时候,我可能还会再提到:)
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星