递归的基本思想:
拆解问题
1、把规模大的问题变成规模较小的同类型问题
2、规模较小的问题又不断变成规模更小的问题
3、规模到一定程度可以直接求出他的解。
求解:
1、由最小规模问题的解得出较大规模问题的解
2、由较大规模问题的解得出规模更大问题的解
3、最后得出原来的问题
链表的子结构是链表,二叉树的子结构还是二叉树,这些都适用于递归。
递归问题解决思路
1、明确函数功能
先不要考虑里面的代码怎么写,首先要搞清楚这个函数是干什么用的,能完成什么功能。
2、明确子问题和问题的关系(明确第一次调用的函数与下一次调用的函数的关系)
3、明确递归基(边界问题)
递归的过程中,子问题的规模在不断减少,当小到一定程度是可以直接得出它的解。
寻找递归基,相当于是思考:问题规模小到什么程度可以直接得出解。
image.png
image.png
image.png