初学算法,递归时,曾经尝试用人脑,把递归流程梳理,最后,发现是我自不量力了,重复是计算机擅长的。
分析思路
首先思路分析上,类似与高中物理的整体法和隔离发,先吧大问题拆分为独立子问题的等价式。
如果知道了最小子问题解,那么再逐层向上返回,即可
你如何去证明,其合理性呢
数学归纳法
1边界条件,可以理解为,某个条件成立
第二步类似于最终的递归返回值,就是任意条件,能得出 f(n)
递归的定义,
-
怎么证明,递归定义是合理的(清晰的原问题是什么,以及子问题是什么)
-
边界情况,是为了在数据规模最小时,返回答案
-
递归让人迷惑的点在于,递归调用解决子问题的过程
递归与迭代
递归是逆向,想找最终答案,但是不断逆向推导到最小子问题,再返回
递归函数定义--明确功能
边界情况处理,或者说最小子问题解集--
递归调用--目的是为了不断减小数据规模
函数返回--返回到当前层,也就是最外层调用的函数