如何在 python 中的递归函数中添加计数器



计数器x在整个递归过程中保持 1 而不是递增。

我的代码

def square(l):
    if len(l) > 0:
        x=0
        print("square of element ", x+1 , ": ", l[0] ** 2)
        square(l[1:])

b = (-2,3,11)
square(b)

输出

元素 1 的平方 : 4

元素 1 的平方 : 9

元素 1 的平方 : 121

有没有办法解决这个问题?提前感谢

x=0在你的代码中定义了一个局部变量;即函数的每个实例都有一个新变量,当递归调用square时,嵌套的被调用函数将创建自己的x

解决方案是使用全局:

x = 0
def square(l):
    if len(l) > 0:
        global x
        x = x+1
        print("square of element ", x , ": ", l[0] ** 2)
        square(l[1:])

将函数更改为:

def square(l, x=0):
   if len(l) > 0:
       print("square of element ", x+1 , ": ", l[0] ** 2)
       x= x+1
       square(l[1:], x)

然后:

b = (-2,3,11)
square(b)

结果将是:

square of element  1 :  4
square of element  2 :  9
square of element  3 :  121

每次调用函数时,x都会被这一行设置为零x=0 if 下。您需要更改代码。您可以按照以下过程操作:

x = 0
def square(l):
    global x
    if len(l) > 0:
        x += 1
        print("square of element ", x, ": ", l[0] ** 2)
        square(l[1:])
b = (-2, 3, 11)
square(b)

元素 1 的平方 : 4

元素 2 的平方 : 9

元素3的平方:121

最新更新