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