请稍等 ...
×

采纳答案成功!

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

递归方法为什么不退出

public Node reverseLinkedList(Node head){
    if (head==null||head.getNext()==null){
        return head;
    }
   Node newHead= reverseLinkedList(head.getNext());
    head.getNext().setNext(head);
    head.setNext(null);
    return newHead;
}

debug调试能走到第一个return ,程序还能走下去,return 不是方法返回么,这里如何理解

正在回答

2回答

是不是循环调用啊 结合上下文啦

0 回复 有任何疑惑可以回复我~
  • 提问者 car #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-10-31 20:00:51
ccmouse 2017-10-31 20:09:40

这是一个递归函数,你可以注意看一下调试器里的调用堆栈,第一个return返回以后,会跳到上一层调用他的那个人那里的第5行,看上去像是运行下去了,其实不是。不知同学是一时没想到还是不太理解递归。由于我这门课是面试课程,内容众多,属于复习课,所以听讲是需要学习过相关的计算机课程。

在后面的6-8 递归开销中,我还会打开调试器分析这个调用堆栈。

0 回复 有任何疑惑可以回复我~
  • 提问者 car #1
    谢谢,脑子一下子转不过来,这递归是不太好理解。
    回复 有任何疑惑可以回复我~ 2017-10-31 21:06:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信