File tree Expand file tree Collapse file tree 3 files changed +3
-1
lines changed Expand file tree Collapse file tree 3 files changed +3
-1
lines changed Original file line number Diff line number Diff line change @@ -71,6 +71,7 @@ def print_num_recursive_revserve(n):
71
71
递归只用大脑不用纸笔模拟的话很容易晕,因为明明是同一个变量名字,但是在不同的调用栈里它是不同的值,所以我建议
72
72
你最好手动画画这个过程。
73
73
74
+ ![ ] ( ./print_rec.png )
74
75
75
76
# 用栈模拟递归
76
77
刚才说到了调用栈,我们就用栈来模拟一把。之前栈这一章我们讲了如何自己实现栈,不过这里为了不拷贝太多代码,我们直接用 collections.deque 就可以
@@ -105,6 +106,7 @@ def print_num_use_stack(n):
105
106
```
106
107
这里结果也是输出 1 到 10,只不过我们是手动模拟了入栈和出栈的过程,帮助你理解计算机是如何实现递归的,是不是挺简单!现在你能明白为什么上边 print_num_recursive print_num_recursive_revserve 两个函数输出的区别了吗?
107
108
109
+
108
110
# 尾递归
109
111
上边的代码示例(麻雀虽小五脏俱全)中实际上包含了两种形式的递归,一种是普通的递归,还有一种叫做尾递归:
110
112
Original file line number Diff line number Diff line change 20
20
- 如果有多余的时间(一般不会有)注意一些边界条件,防御性编程、代码风格、单元测试等东西
21
21
22
22
# 结语
23
- 这套教程列举的算法很有限,包括图算法、贪心,动态规划,机器学习算法等很多没有涉及到,因为它们确实需要读者更深入的理论基础,而且这套教程的目的也不是针对算法竞赛。
23
+ 这套教程列举的算法很有限,包括图算法、贪心,动态规划,分布式, 机器学习算法等很多没有涉及到,因为它们确实需要读者更深入的理论基础,而且这套教程的目的也不是针对算法竞赛。
24
24
不过了解了本教程涉及到的大部分算法是可以应付绝大多数的业务开发的。如果读者对算法有兴趣,本教程引用的几本参考书都可以去深入学习。希望本教程能对你学习算法、养成良好的思维方式和编码习惯等有所帮助。
25
25
26
26
# 延伸阅读
You can’t perform that action at this time.
0 commit comments