为何Python递归函数cal返回None类型而非预期的g值?
问题原因
你的cal函数在递归分支里没有返回递归调用的结果。当len(g)!=1时,函数执行完cal(str(s))后,没有用return把这个递归调用的结果返回出去——Python里函数如果没有显式的return语句,默认会返回None,这就是你得到None的原因。
另外还要注意:你调用cal(n*k)时,如果n和k是整数,n*k是数字类型,传给cal后会因为数字没有len()属性直接报错,调用时需要先转成字符串。
修正后的代码
def cal(g): if len(g) == 1: return g else: s = 0 for i in g: s += int(i) return cal(str(s)) # 这里加上return,把递归结果返回 a = cal(str(n*k)) # 把数字转成字符串再传入 print(a)
内容的提问来源于stack exchange,提问作者whogotyousmiling
相关产品推荐
相关产品推荐

