递归求阶乘:基例写错了
递归就是函数调用自己。写递归要两样东西:
- 基例:最简单的情况直接给答案,不再调用自己(否则停不下来,报
RecursionError); - 递推:把问题变小一点,交给自己去算。
def fact(n):
if n == 0: # 基例:0! = 1
return 1
return n * fact(n - 1) # 递推:n! = n × (n-1)!
下面的程序读入 n(0 ≤ n ≤ 10),输出 n 的阶乘,可是不管输入多少都输出 0。改一处让它对。运行后看画布:每一层调用都弹出一张卡片。
样例:输入 4,输出:
24代码里以 @youci 开头的 print 只负责运行后在画布上显示中间值,不影响输出和判题,不用改。