请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

递归理解问题

波波老师好,这几天开始复盘本课,今天看到ListNode的删除问题的时候,突然想着增加一个removeFirstElement方法:

    public ListNode removeFirstElement(ListNode node, int val) {
        if (node == null) return null;
        if (node.val == val) {
            return node.next;
        }
        node.next = removeFirstElement(node.next, val);
        return node;
    }

经过验证结果是正确的。

同时尝试给递归划分个阶段,我想问下站在您的角度来看,这样的划分合适吗,是否有可能会对更复杂的递归情境造成理解障碍。

我的划分过程如下:
图片描述
然后把求和代码做了一点类似几何中的辅助线功能的小改动:
图片描述

正在回答

1回答

如果你的 removeFirstElement 指删除第一个值为 val 的元素,没有问题。代码的解析也很正确:)


不过一般我不喜欢分“有穷终止”和“需求终止”这样的条件(实际上这是我第一次听说这样的名词)。在我看来,都是终止条件。但是终止条件有可能有多种,面对终止条件,也有可能产生不同的逻辑。


不过这无所谓,只要有助于你的理解,就是可以的:)


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 慕前端8962423 #1
    非常感谢!
    这个划分确实草率,引用课程笔记修正下:
    1. 求解最基本问题,最基本问题是不能自动求解的,得程序员自己编写。
    2. 把原问题转化为更小的问题
    回复 有任何疑惑可以回复我~ 2019-12-02 09:36:58
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信