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

如何解决Python递归函数evenlis执行后输出None的问题?

解决Python递归函数打印偶数后输出None的问题

问题原因

你代码最后一行用了print(evenlis(arr)),但evenlis函数没有定义返回值,Python里函数默认返回None,所以外层的print会把这个默认返回值也输出出来,这就是多余None的来源。

解决方案

有两种简单的处理方式:

方式一:直接调用函数,不用print包裹

因为evenlis函数内部已经通过print语句输出了偶数,不需要再用外层的print去输出它的返回值。修改最后一行代码即可:

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def evenlis(x, n = 0):  
    if n == len(x):
        return 
    if x[n] % 2 == 0:
        print(x[n], end = " ")
    evenlis(x, n + 1)
evenlis(arr)  # 去掉外层的print

执行后只会打印数组里的偶数,不会输出None,后续代码也能正常运行。

方式二:让函数返回结果字符串,再打印

如果需要更灵活处理结果(比如后续要对偶数做其他操作),可以修改函数,让它收集所有偶数并返回拼接后的字符串,再用print输出:

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def evenlis(x, n = 0, result = ""):  
    if n == len(x):
        return result.strip()  # 移除末尾多余的空格
    if x[n] % 2 == 0:
        result += f"{x[n]} "
    return evenlis(x, n + 1, result)
print(evenlis(arr))

这种方式下函数返回整理好的偶数字符串,print输出的就是这个字符串,不会出现None。

补充说明

你之前用exit()会终止整个程序,换成return是正确的选择——return只会结束当前的函数递归调用,不会影响后续代码的执行,这也是解决问题的前提。

内容的提问来源于stack exchange,提问作者Mihai Creciun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:30:51