Python递归函数中全局计数器计数异常问题咨询
问题原因分析
- 赋值逻辑错误:你代码里写的
countcalls = +1等价于直接将countcalls赋值为1,不是累加计数,每次函数调用都会把变量重置为1,所以每次打印的结果都是1。正确的累加写法应该是countcalls += 1,等价于countcalls = countcalls + 1。 - 打印语句位置错误:你把
print(countcalls)放在了函数内部,每次递归调用都会触发一次打印,自然会连续输出11次数字。如果只需要打印最终总调用次数,需要把打印逻辑移到函数外部,等递归全部执行完成后再打印。
修正后的代码示例
countcalls = 0 def power(x, n): global countcalls countcalls += 1 if n <= 0: return 1 else: return x * power(x, n-1) # 调用测试 res = power(2, 10) print(countcalls) print(res)
输出结果
11 1024
内容的提问来源于stack exchange,提问作者Mooncake
相关产品推荐
相关产品推荐

