Python递归函数处理奇数时出现内核问题,偶数运行正常求助
问题原因
你写的递归函数遇到奇数时会陷入无限递归:
- 传入奇数(比如5),函数先打印"enter a even number",但没有终止递归,而是继续执行
return evenNum(num-2),5-2=3(还是奇数),再次打印提示后继续减2到1,再到-1、-3...一直循环下去,最终触发递归深度超限,导致内核崩溃,出现你看到的报错。 - 传入偶数时,num会一步步减到2,触发
return num终止递归,所以能正常运行。
修复方案
给奇数检测的分支加上终止逻辑,同时补充对小于2的偶数的处理,避免递归到负数:
# recursive demo function1 # Even nums def evenNum(num): # 检测到奇数,打印提示后直接返回,终止递归 if num % 2 != 0: print("enter a even number") return # 处理小于2的偶数(比如0),避免递归到负数 if num < 2: print("number should be at least 2") return # 递归终止条件:num等于2时返回 if num == 2: return num else: return evenNum(num-2) evenNum(5) # 输出:enter a even number evenNum(6) # 输出:2 evenNum(0) # 输出:number should be at least 2
关键修改点
- 奇数分支添加
return,直接终止递归,不让程序继续往下执行递归调用 - 新增对num小于2的判断,防止传入0或负数时出现无限递归
内容的提问来源于stack exchange,提问作者Sefa_Kurtuldu
相关产品推荐
相关产品推荐

