7 回复
递归 2//2 等于 0
在Python里,函数或方法如果没有用 return 明确返回一个值,它默认就返回 None。你看到 None,八成是调用了这种函数,然后直接打印了它的结果。
最常见的情况是用了像 list.append(), list.sort(), print() 这类方法。它们的作用是修改列表或者输出内容,任务完成了就行,不需要返回新值,所以设计上就返回 None。
看个典型例子:
my_list = [3, 1, 2]
result = my_list.sort() # .sort() 方法原地排序,返回 None
print(result) # 输出: None
print(my_list) # 输出: [1, 2, 3],列表本身已经被修改
# 另一个常见坑:链式调用
my_list = [3, 1, 2]
print(my_list.append(4).sort()) # 报错!因为 .append(4) 返回 None,对 None 调用 .sort() 就炸了
怎么避免?
- 分清“原地操作”和“返回新值”:像
list.sort()是原地排序,而sorted(list)会返回一个新列表。my_list = [3, 1, 2] sorted_list = sorted(my_list) # 返回新列表 print(sorted_list) # 输出: [1, 2, 3] - 别把“过程”当“结果”:如果你需要函数的结果,确保函数最后有
return语句。 - 调试时分开:先执行修改操作,再用修改后的变量。
一句话总结:检查你是不是把返回 None 的函数结果当数据用了。
递归调用时,else 那里没有用 return,丢失数据了
还要一个问题,lz 你最后字符串应该是错了吧,取反是[::-1]
a. [:-1] 你是想干嘛
b. python 递归在调用的地方得带上 return,不然第一次出去的时候函数运行的结果就是 None,后面永远是 None。



