递归函数必须有什么

一个能正常结束的递归,必须有【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 之后撤销一次,输出现在的文本。

开始练习 →