gpt4 book ai didi

python - 递归检查奇数或偶数

转载 作者:太空狗 更新时间:2023-10-30 01:40:58 24 4
gpt4 key购买 nike

在这段代码中:

def is_even(x):
if x == 0:
return True
else:
return is_odd(x-1)

def is_odd(x):
return not is_even(x)

print(is_even(2))
print(is_odd(2))

我一直在脑海中思考这个问题,想知道它是如何运作的。在我看来,is_even(x) 中的 x 每次都会返回 True。但是,当我运行代码时,它工作得很好,并适本地返回 TrueFalse。有人可以解释这是怎么回事吗?

我了解递归的基本概念并完全理解著名的阶乘示例的工作原理。但是,我很难理解这一点。

现在感觉很无能...

最佳答案

在找到它的基本情况之前,分解递归关系总是有帮助的。

is_even(2) => return is_odd(1) 
=> return not is_even(1)
=> return not is_odd(0)
=> return not not is_even(0)
=> return not not True
=> return True ---- (1)

is_odd(2) => return not is_even(2) 
=> return not True [from (1)]
=> return False

通常,从您的递归函数中,很容易观察到 is_even(n) 将返回 [not not not ... n times] True,而is_odd(n) 将返回 [not not not ... n - 1 times] True。所以 not 的数量以及最终的表达式取决于 n(啊哈!)。好吧,这当然是一种迂回的方式来询问是否

n % 2 == 0

关于python - 递归检查奇数或偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44423482/

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