在用于计算字符串中"1"字符编号的代码下方。
count2=0 #global variable
def Ones(s):
no=0;
global count2 #wanted to eliminate global variable
if(count2>=len(s)):
return no
if(s[count2]=='1'):#count2 is the index of current character in String
no = no+1
count2=count2+1
return no + Ones(s)
else:
count2=count2+1
return Ones(s)
在上面的代码中使用count2作为全局变量,有没有可能的方法将count2变量声明和使用为函数内部的局部变量,已经尝试过但没有运气
def Ones(s):
count2=0 # but everytime it get reset to zero
注意:函数的参数数量应仅保留一个,而不必使用任何其他辅助函数。
避免显式状态变量是递归概念的重要组成部分。
您调用的方法只需要字符串的其余部分即可在其中查找 1。因此,您可以只传递字符串的其余部分,而不是传递字符串和字符串中的位置。
Python强大的索引语法使这变得非常容易。只需这样看:方法的每个实例都可以删除它处理的部分(在本例中:一个字符(,传递它未处理的部分(字符串的其余部分(。
就像@ypnos说的,如果你真的想使用递归,这里是代码:
def Ones(s):
if not s:
return 0
if s[0]=='1':
return 1 + Ones(s[1:])
else:
return Ones(s[1:])
希望对您有所帮助。