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
相关产品推荐
相关产品推荐

