递归中尝试返回count时为何返回None?
问题原因分析与修正
问题出在递归调用时没有传递返回值:
当count从1到9时,函数执行完print(count)后调用了myfun1(count),但这一步没有用return返回递归调用的结果。这些层级的函数调用在执行完递归后,会默认返回None。
只有当count等于10时,最内层的函数确实返回了10,但这个返回值没有被上层的函数调用接住并继续返回,所以最终整个myfun1(0)的调用返回的是None。
修正后的代码
def myfun1(count): count += 1 if count == 10: return count print(count) return myfun1(count) # 加上return传递递归的返回值 if __name__ == '__main__': print(myfun1(0))
修改后,每一层递归调用都会把下层的返回值传递上来,最终主函数就能得到预期的10。
内容的提问来源于stack exchange,提问作者Alpha々 Reaper
相关产品推荐
相关产品推荐

