COMP9021--7.18
从今天开始引入递归的概念
1. 为了避免递归过程中陷入死循环,一定要在最开始的时候就写好递归结束的条件
2. 递归的本质是通过解决smaller input,并用其结果得到下一步的output,类推直至约定的递归终止点
3. yield的作用是把一个函数变成一个generator,它与函数的不同之处在于生成generator看起来像是函数调用,但不会执行任何函数操作,直到调用next。在for循环执行时,每次循环执行到yield时,语句就会中断,函数就会返回一个迭代值,下次迭代时,代码将从yield的下一条语句继续执行,直到再次碰见yield
4. iter()也是为了生成迭代器 (used in list, tuple...)
5. 补充一个上节课的知识点,序列解包:
a=[0,1,2,3,4]
>>>d(*a)
0 1 2 3
6. 需要注意的一点,就是默认初值指的是默认一个原始位置,但是随着语句的执行,如果多次调用默认初值,其结果也会随之变化,如图:
7. 6中的解决方案是将默认初始值设置为空,每次遇到为空的情况就建立一个新的list:
8. quiz就是要找1组成的最大长方形