【发布时间】:2022-01-15 17:48:03
【问题描述】:
我希望结果是字符串类型,所以我尝试使用 str 函数强制递归调用
当返回类型 int 的结果时,下面的函数可以正常工作
def factor(n: int) -> int:
if n <= 1:
return 1
return n * factor(n - 1)
print("factorial 5=", factor(5))
输出:
factorial 5= 120
但是当递归调用 str str(n * factor(n - 1)) 时,我得到了不同的结果
def factor(n: int) -> str:
if n <= 1:
return 1
return str(n * factor(n - 1))
print("factorial 5=", factor(5))
输出:
factorial 5= 222222222222222222222222222222222222222222222222222222222222
我做错了什么?
【问题讨论】:
-
因为你在各个层面都进行了演员,不仅在最后返回
-
return n * factor(n - 1)的逻辑只有在factor(n - 1)是 int 而不是字符串时才有意义。所以你不希望递归调用返回字符串。