首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解释这个递归是如何得到字符串中字母数的。

问解释这个递归是如何得到字符串中字母数的。
EN

Stack Overflow用户
提问于 2022-04-10 14:53:48
回答 2查看 42关注 0票数 -1
代码语言:javascript
复制
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:,当它包含允许的字符并从那里移动时,它将从左边执行。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-10 15:03:53

根据您提供的函数,它使用了递归特性,其中它在自身内调用相同的函数。在调用该函数时,它将返回添加到其他结果:

代码语言:javascript
复制
return 1 + funk(someString[1:])

在此递归之后,通过以下方法感知:

代码语言:javascript
复制
if someString == "":

她把所有加在一起的“回报”的总和还给了她。下面是一个示例,说明如何存储最终值或您所称的“字符数”。

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2022-04-10 15:04:38

递归函数是函数调用自身的特例。对于第一次程序员来说,这个概念往往很难理解。

在您的情况下,返回值与创建一个非递归示例相同,其中返回的值包含在表达式中:

代码语言:javascript
复制
def f():
    return 0

def g():
    return 1 + f()

def h():
    return 2 + g()

print(h())

输出:

3

因此,在程序中的任何地方,我们都无法看到所计算的值分配给变量的位置。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71817731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档