计数器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