- admin 的博客
什么是递归?
- 2025-3-2 17:18:55 @
递归是重要的计算机思维。
人类的思维是正向的递推思维,例如数学归纳法。
用递推思维,来理解递归问题,思路就错了,理解起来就难啦
1.递推思维求阶乘:10!
1!=1
2!=2 * 1
3!=3 * 2 *1
……
10!= 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
递推思维是正向的,以小见大的,从局部到整体的,是符合人类日常思维习惯的。
2.递归思维求阶乘:10!
10! = 10 * 9!【第一步,开始拆解,向下传递】
9! = 9 * 8!
8! = 8 * 7!
……
2!= 2 * 1!
1!= 1【最后一步,终止,向上回归】
递归公式为f(n) = n * f(n-1)
递归思维则是一种逆向思维,从大到小,从整体到局部,与人类的递推思维不相符。
理解递归,一定要倒着想问题,为了得到最后一步,倒数第二步应该返回什么,才能把问题想清楚!!!
3.理解递归的关键
既然理解递归要倒着想问题,就要先搞清楚大问题是如何一步一步变成小问题的。
首先,要清楚逆向求解的第一步,确定递归的拆解方式(或公式),即向下传递的方式。
其次,要确定递归的最后一步,即终止向下传递条件,然后向上回归。
向下传递 + 终止条件 + 向上回归 = 递归。
Tips:理解递归问题的时候,不要总是想着最后一步返回值是什么样,又是如何向上传递的。 这不就成了递推思维了嘛!!!关键在于理解第一步为什么这么拆解,其次,明确终止条件即可。