【发布时间】:2021-11-14 15:24:29
【问题描述】:
我已经尝试理解了大约 2 个小时,但我仍然感到困惑。
def is_even(n):
if n==0:
return True
else:
return is_odd(n-1)
def is_odd(n):
return not is_even(n)
【问题讨论】:
-
什么特别让你困惑?
-
递归一开始可能很难理解。一旦你举出例子并一遍又一遍地浏览代码,你就会弄明白。
-
这是一个学习递归的糟糕例子。这个任务should be done with modulo(
%),不是重复减法,也绝对不是递归减法。对于 n=499 或更大,它实际上会崩溃。在这里提问之前,请先尝试阅读教程,例如this one from RealPython。 -
@wjandrea 这可能是一个家庭作业,教师可能要求创建递归函数而不是使用模数。代码可能不是为了效率,而是为了学习目的。我听说候选人在面试中也被问到这个问题。
-
@wjandrea 我和你在一起。这不是教授递归的最佳练习。阶乘是学习记忆和递归的好方法。现实情况是,一些老师和面试官举了这个例子。
标签: python python-3.x recursion