递归过程中如何维持变量累加值?Python整除计数递归函数返回值仅为1排查
递归计数问题修正方案
问题根因
- 第一版代码未接收递归调用的返回值,各层的局部变量
y互相独立,无法累加下层计数,因此最多只能返回1。 - 第二版新增的
1 + even_divide_count(number, num2)语句未赋值给任何变量,计算结果直接丢弃,没有实际作用,问题未得到解决。
正确实现
按照你梳理的核心思路,直接返回当前层计数叠加下层递归结果即可,最简实现代码如下:
def even_divide_count(num1, num2): number = num1 // num2 if number % 2 == 1 or number == 0: return 0 return 1 + even_divide_count(number, num2)
如果需要保留原代码的变量y定义,修改如下即可:
def even_divide_count(num1, num2): y = 0 number = num1 // num2 if number % 2 == 1 or number == 0: return 0 y = 1 + even_divide_count(number, num2) return y
内容的提问来源于stack exchange,提问作者Miller25
相关产品推荐
相关产品推荐

