递归函数必须有什么
一个能正常结束的递归,必须有【0】。
递归算出来是多少
运行下面这段程序: def fact(n): if n <= 1: return 1 return n * fact(n - 1) print(fact(5))
一共压了几层
运行下面这段程序,它数的是"递归压了几层": DEPTH = 0 def down(n): global DEPTH DEPTH += 1 if n == 0: return
自己写一个递归
补全 fact:用递归算阶乘,别用循环。 补全后输出 5 的阶乘。
不用递归,自己拿栈来压
递归靠的是系统的调用栈。这次不用递归,自己拿一个栈把嵌套列表压平。 补全 flatten_count,输出一共有几个数字。
忘了写基线条件会怎样
写一个故意漏掉基线条件的递归,调用它并把抛出来的错误类型名打出来。 (这题是让你亲眼看见调用栈被压满。)
撤销为什么天生适合用栈
「撤销」这个功能用栈来做,是因为【0】。
浏览器的后退和前进要几个栈
要同时支持后退和前进,需要【0】。
撤销一次之后剩下什么
运行下面这段程序: text = "" history = [] for ch in "abc": history.append(text) text = text + ch text
做一步,撤一步
补全 do 和 undo:do 在末尾加一个字(改之前先把旧的存进 history),undo 把最近存的那份拿回来。 依次做 a、b、c 之后撤销一次,输出现在的文本。