You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请协助解析这段Python递归代码的实现逻辑

这段Python递归代码的逻辑解析

先看完整代码:

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_odd(17))
print(is_even(23))

核心逻辑说明

这两个函数靠互相递归调用实现奇偶判断,本质基于两个数学常识:

  • 0是偶数
  • 一个数减1后,奇偶性会反转(奇数减1变偶数,偶数减1变奇数)

1. is_even(x)的逻辑

  • 如果输入的x是0,直接返回True(因为0是偶数)
  • 如果x不是0,就调用is_odd(x-1)——意思是:只要x-1是奇数,那x肯定是偶数

2. is_odd(x)的逻辑

直接返回not is_even(x)——简单直白:不是偶数的数,就是奇数,完全依赖is_even的结果取反

实际运行过程示例

拿is_odd(17)来说

  1. 调用is_odd(17),它会返回not is_even(17)
  2. 调用is_even(17),因为17≠0,所以返回is_odd(16)
  3. 调用is_odd(16),返回not is_even(16)
  4. 调用is_even(16),返回is_odd(15)
    ...
    这个递归会一直往下减,直到x变成0:
  • 当调用到is_even(0)时,返回True
  • 然后开始逐层往回算:
    is_odd(1) → not is_even(1) → not is_odd(0) → not (not is_even(0)) → not (not True) → True
    一路回溯后,is_odd(17)最终返回True

再看is_even(23)

同样递归到x=0时返回True,然后经过多次取反回溯,最终得到False(因为23是奇数)

最终输出结果

代码运行后会打印:

True
False

内容的提问来源于stack exchange,提问作者Arpan Saha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:24:18