下面的代码用于计算String中“ 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强大的索引语法使此操作非常容易。只是这样看:方法的每个实例都可以带走它已处理的部分(在这种情况下为一个字符),并传递未处理的部分(字符串的其余部分)。

10-07 14:20