我想用2个参数(步骤,数字)创建一个递归函数。
递归内发生一些带有数字的事件,并使用步骤1和一个新数字再次调用该函数。
一旦steps == 0我想增加一个计数器,就可以看到遇到了多少个步骤0的函数调用,具体取决于函数中的算法。
有没有办法做到这一点-如果没有全局变量或其他参数,那么两者都是不可能的!
我尝试了:
if not counter in locals():
counter=0
但这不起作用,它说
UnboundLocalError: local variable 'counter' referenced before assignment
这里是完整的代码:
def IsaacRule(steps, number):
if not counter in locals():
counter = 0
if steps == 0:
counter+=1
return counter
if ((number - 1) / 3) % 2 == 1:
IsaacRule(steps-1, (number - 1) / 3)
if (number * 2) % 2 == 0:
IsaacRule(steps-1, number*2)
return counter
使用全局变量(并且该函数外部的counter = 0)可以工作-但不允许使用全局变量
慕婉清6462132
相关分类