自己动手写CPU的源代码,一共15章,可以完整实现MIPS的指令
文件:n459.com/file/25127180-476886294
以下内容无关:
-------------------------------------------分割线---------------------------------------------
目录
- 一、往期回顾
- 1.生成器代码详解
- 2.生成器的三个方法
- 二、递归函数
- 1.什么是递归函数
- 2.递归函数调用原理图
- 3.递归边界
- 4.通过递归函数实现的任意数的阶乘
- 5.这个递归函数的递归临界点在哪?
- 6.斐波那契数列
- 三、系列推荐
一、往期回顾
1.生成器代码详解
def gen():
for i in range(5):
j = yield i
print(j)
# send:与生成器进行交互
g = gen()
print(next(g))
print(next(g))
![a00d8d8f4d2f27b97b14cba97fb276bf.png](https://i-blog.csdnimg.cn/blog_migrate/6ad34a3c9b5e466086ec810b1fcc2cbf.jpeg)
第一个print(next(g))
打印的 0,就是生成器生成的元素。第二个print(next(g))
打印的 1 也是生成器生成的元素,None 是print(j)
打印的j
。
通过生成器获取元素的时候,首先生成器进去的话,当调用生成器获取里面的值,它会从上往下走,走到j = yield i
这里,把yield
这里的i
这个值返回出来,调用完gen()
返回一个生成器g
。
通过这个生成器next(g)
去拿值的时候,然后它从上往下执行代码,走到j = yield i
这里,yield
相当于把i
,通过yield
返回出去。
从生成器里面返回出来,就生成一个数据。生成这个i
,到第一个print(next(g))
这里,打印的就是i
。
第二个print(next(g))
,再用next()
调用生成器的时候,那么这个生成器会从yield
之后继续往下执行。
通过next()
去触发生成器的时候,yield
之后是没有内容的,j
接收的就是空的,所以打印j
的时候,打印出来的是个None
。
2.生成器的三个方法
# 生成器的三个方法: send close throw
def gen():
for i in range(5):
j = yield i
print(j)
# send:与生成器进行交互
g = gen()