中断
学过操作系统这门课的听说应该都知道中断,这边我们不展开去讲它的意义,只讲一下中断的具体执行,来帮助理解递归这个概念
直接上百度百科关于中断执行的流程图
可以看到,完成一次中断的流程是这样的
- 程序正常运行到某处
- 中断源发出中断请求
- 程序在中断处打一个断点——补充一下,这个是通过栈来实现的,把上下文和一些相关的消息全部压入栈中,并暂时停止执行当前程序
- 响应中断,开始执行中断服务程序
- 执行中断服务程序结束后,返回,从栈中取出上下文信息,从断点处继续执行程序
递归
说完中断,再来看看递归,这里举一个简单的例子方便理解
class Node {
int val;
Node next;
public void traversal(Node head) {
if (head == null) return; //base case