为什么这个生成字母数字串的Python递归函数无法正确返回结果?
问题原因
你的递归函数只有最内层的终止条件分支写了return语句,另外两个走递归调用的分支都没有将递归调用的结果返回。Python中函数如果没有显式声明return,执行完毕后默认返回None,因此最内层生成的结果无法逐层传递到最外层的调用处,最终你拿到的返回值就是None。
修正后的代码
import random import string def randalphn(nchar :int, nnums:int, result:str = '') -> str: if nchar == 0: if nnums == 0: print(result) return result else: # 新增return,返回递归调用的结果 return randalphn(nchar, (nnums - 1), result+str(random.randrange(9))) else: # 新增return,返回递归调用的结果 return randalphn(nchar-1, nnums, result+random.choice(string.ascii_uppercase)) # 现在可以正常拿到返回值 res = randalphn(2,4) print(res)
这里额外给result参数设置了默认空字符串,调用时可以省略第三个参数,使用更便捷。
内容的提问来源于stack exchange,提问作者skulk001
相关产品推荐
相关产品推荐

