我爷爷的爷爷的爷爷的爷爷的爷爷 曾经说过:“不懂就Google”。
在以上这句话中,有一个任务就是找到某一个人物来作为句子的主语,假如是CPU在执行上面的任务时,它的过程大概就是以下这样:
private Person 临时爷爷;
private Person 目标爷爷 = new Perso
n("目标爷爷");
pubblic void find爷爷() {
while (临时爷爷 != 目标爷爷){
临时爷爷 = get爷爷(临时爷爷);
}
// 终于找到了爷爷
}
public void get爷爷(Person 爷爷){
return 爷爷.爷爷();
}
递归的核心思想就是,一个方法不停地调用自己直到某个条件达到了(“我爷爷的爷爷的爷爷的爷爷的爷爷” 找打了),而这个被递归的方法则是这个任务中的一个单元操作(获取“爷爷的爷爷”)。
现在假象一下你就是CPU:
- 我爷爷 -> 这个不对,接着调用找爷爷的方法;
- 我爷爷 的爷爷 -> 这个不对,接着调用找爷爷的方法;
- 我爷爷 的爷爷 的爷爷 -> 这个不对,接着调用找爷爷的方法;
- 我爷爷 的爷爷 的爷爷 的爷爷 -> 这个不对,接着调用找爷爷的方法;
- 我爷爷 的爷爷 的爷爷 的爷爷 -> 这个不对,接着调用找爷爷的方法;
- 我爷爷 的爷爷 的爷爷 的爷爷 的爷爷 -> 找到啦!方法返回;
- 临时爷爷 被赋值给正确的爷爷。
以上。