解释这种获取字符串中字母数的递归是如何工作的

Explain how this recursion to get the number of letters in a string works

def funk(someString):
    letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz"
    if someString == "":
        return 0
    elif someString[0] in letters :
        return 1 + funk(someString[1:])
    else:
        return 0 + funk(someString[1:])
        
someString="3joe3"

print(funk(someString))

统计字符串中所有字母的函数

所以我们在字母中定义了允许的字符。

我们定义字符串并调用函数。

在此示例中,它将首先执行 else: 部分,因为第一个元素是数字。

然后它将执行 elif: 它从左边开始的部分,因为它包含允许的字符并从那里移动。

我的问题是字符串中的字符数在哪里保存?

根据您介绍的函数,它使用了递归功能,它在自身内部调用相同的函数。当函数被调用时,它将 return 添加到其他结果中:

return 1 + funk(someString[1:])

经过这个递归感知之后:

if someString == "":

她完成并 return 计算了她添加的所有“Returns”的总和。下面是如何存储最终值或所谓的“字符数”的示例

def funk(someString):
    letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz"
    if someString == "":
        return 0
    elif someString[0] in letters :
        return 1 + funk(someString[1:])
    else:
        return 0 + funk(someString[1:])

qtd = funk("HELLO JOAO")

print(qtd)

递归函数是函数调用自身的特例。 first-time 程序员通常很难掌握这个概念。

您的 return 值与我们发明一个 non-recursive 示例相同,其中 returned 的值包含在表达式中:

def f():
    return 0

def g():
    return 1 + f()

def h():
    return 2 + g()

print(h())

输出:

3

因此,在程序中的任何地方我们都看不到正在计算的值是在何处分配给变量的。

Python,就像其他编程语言一样,使用隐藏变量来引用 return 值。