出口条件该写 `== 0` 还是 `<= 0`
把出口从 n == 0 改成 n <= 0,好处是【0】。
没有出口会抛什么错
运行下面这段程序,它把错误类型打出来: def down(n): return down(n - 1) try: down(5) except Exception as e: print(type(e).__nam
⚠️ 给一个漏了出口的递归补上出口
下面这个 fact 漏了出口,直接跑会抛 RecursionError。 补上出口,然后算 5 的阶乘。
⚠️ 出口有了,但参数没变小
下面这个递归有出口,却还是停不下来——往下递归时传的还是原来那个 n。 把它改对,然后算 5 的阶乘。
分治的三步
分治法的三步是【0】。
分治和普通递归的区别
分治比普通递归多的那一步是【0】。
哪个不是分治
下面这几个里,不算分治的是【0】。
分治求和得多少
把数组一分为二各自求和再相加。运行下面这段程序: def dsum(a): if len(a) == 0: return 0 if len(a) == 1: return a[0] m
分治求最大值
运行下面这段程序: def dmax(a): if len(a) == 1: return a[0] m = len(a) // 2 left = dmax(a[:m]) right = dm
用分治求和
补全 dsum:把数组从中间切开,两边各自递归求和,再把两个结果加起来。