python - 为什么我需要使用 `return` 才能使递归工作?
问题描述
这是我在 Hackerrank 上遇到的递归编码挑战的一部分。我理解这个概念。然而,这部分并不完全,我挣扎了很长一段时间。请给我解释一下!
此代码位不起作用:
if n < 1:
result = 1
else:
result = n * factorial(n-1)
print(n)
但如果我使用return
,它会工作。
为什么?对我来说,在这种情况下它们是完全一样的。
解决方案
该指令n * factorial(n - 1)
将乘以n
的返回值factorial(n - 1)
。如果您不使用return
语句,那么您乘以n
哪个None
不是预期的行为。
因此正确的程序是:
def factorial(n):
if n < 1:
result = 1
else:
result = n * factorial(n - 1)
return result
或更简洁地说
def factorial(n):
if n < 1: return 1
return n * factorial(n - 1)
推荐阅读
- html - 在 div 的底部排列一个 flex-element
- javascript - 在 Chromium 上捕获 Windows 键
- ffmpeg - FFmpeg - 记录 3 个中的特定显示
- cakephp - 带有回调函数的 Cakephp 2.x 查询问题
- javascript - TypeError : Children 不是函数 react-visibility-sensor
- python - Django如何通过信号将成员添加到组中?
- docker - 库从单个文件夹加载 Tomcat 8+ 上的顺序
- static - 关于插件窗口 UnrealEngine SlateStyle 上的静态成员和函数
- react-native - 如何在移动视图布局中加载 power bi 报告?
- scala - 如何在 Akka 中监督 actor 并处理异常