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

Python递归函数print输出正常但return始终返回None问题求解

错误原因

你代码返回None的核心问题是:除了递归终止分支外,其他分支没有显式返回递归调用的结果。

Python中所有函数如果没有执行到显式的return语句,默认会返回None。你当前的代码只有low > high的终止条件分支写了return count,else分支中完成计数累加、调用下一层递归后,没有将下层递归的返回值向上传递,因此顶层调用拿到的就是默认的None。

换成print(count)能输出正确结果是因为print直接在递归终止时打印了当前的count值,不需要依赖函数的返回值传递逻辑,和返回值错误属于两套独立逻辑。


修复方案

最小改动版本(保留现有全局变量写法)

只需要在递归调用前加return即可:

count = 0

def count_lowercase(s, low, high):
    global count
    if low > high:
        return count
    else:
        if s[low] == s[low].lower():
            count += 1
        # 新增return,将下层递归结果向上传递
        return count_lowercase(s, low + 1, high)

更推荐的无全局变量版本

全局变量会存在多次调用时计数未重置的污染问题,纯递归写法可以完全规避全局变量:

def count_lowercase(s, low, high):
    if low > high:
        return 0
    current_count = 1 if s[low] == s[low].lower() else 0
    return current_count + count_lowercase(s, low + 1, high)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:06:03