gpt4 book ai didi

python - Python 如何在递归函数中计算 'and'?

转载 作者:行者123 更新时间:2023-11-30 21:56:40 24 4
gpt4 key购买 nike

假设我们想要检查列表中的所有元素是否均为正数。我们可以定义一个函数:

def check_positive(array):
if not array:
return True
else:
if array[0] <= 0:
return False
else:
return check_positive(array[1:])

该函数是尾递归的。编写此函数的另一种方法如下:

def check_positive(array):
if not array:
return True
else:
return (array[0] > 0) and (check_positive(array[1:])

这个函数也是尾递归吗?

我想,我要问的是如果你要求Python来评估:

True and (f(x))

它会评估f(x),然后评估True and(无论f(x)的结果是什么),还是会评估True and f(x) 等价于 'f(x)' 并通过计算 'f(x)' 来结束表达式的计算?

最佳答案

您的线路:

return (array[0] > 0) and (check_positive(array[1:]))

将计算array[0] > 0。如果为 false,则返回 false,而不调用 check_positive。如果为 true,则会调用 check_positive(array[1:])。因此它的评估顺序与您的第一个示例相同。

请注意,尾递归在 Python 中并不是一个有趣的特性,因为 Python 不进行尾调用优化。

关于python - Python 如何在递归函数中计算 'and'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55444962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com