草庐IT

RECURSION

全部标签

python - Python 方法可以检查它是否已从自身内部调用吗?

假设我有一个Python函数f和fhelp。fhelp旨在递归调用自身。f不应被递归调用。f有没有办法判断它是否被递归调用? 最佳答案 使用traceback这个模块:>>>importtraceback>>>deff(depth=0):...printdepth,traceback.print_stack()...ifdepth>>f()0File"",line1,inFile"",line2,infNone1File"",line1,inFile"",line4,infFile"",line2,infNone2File"",li

python - Python 中字符串的所有排列(递归)

我需要在这个问题上敲敲敲打脑袋。我定义了以下递归函数:defperms(s):if(len(s)==1):returnsres=''forxinxrange(len(s)):res+=s[x]+perms(s[0:x]+s[x+1:len(s)])returnres+'\n'perms("abc")当前返回:abccbbaccacabba想要的结果是abcacdbacbcacabcba我哪里出错了?我如何才能以不同的方式思考这个问题以提出解决方案?注意:我知道itertools函数。我试图了解如何为我自己的学习递归地实现排列。这就是为什么我更希望有人指出我的代码有什么问题,以及如何以不

python - 是否有内置的 dict.get() 的递归版本?

我有一个嵌套的字典对象,我希望能够检索具有任意深度的键的值。我可以通过子类化dict来做到这一点:>>>classMyDict(dict):...defrecursive_get(self,*args,**kwargs):...default=kwargs.get('default')...cursor=self...forainargs:...ifcursorisdefault:break...cursor=cursor.get(a,default)...returncursor...>>>d=MyDict(foo={'bar':'baz'})>>>d{'foo':{'bar':'b

python - Django 查找图中两个顶点之间的路径

这主要是一个逻辑问题,但上下文是在Django中完成的。在我们的数据库中,我们有顶点和线类,它们形成了一个(神经)网络,但它是无序的,我无法更改它,它是一个遗留数据库classVertex(models.Model)code=models.AutoField(primary_key=True)lines=models.ManyToManyField('Line',through='Vertex_Line')classLine(models.Model)code=models.AutoField(primary_key=True)classVertex_Line(models.Model

python - 递归测验 - 无法解决

今天我的CPSC教授布置了一个python测验,主题是递归。全类都被下面的第二个问题卡住了。没有人能够接近解决方案。defsub_set(A):ifA==[]:returnAX=sub_set(A[1:])result=[]forLinX:result+=_____return_____示例代码:print(sub_set([1,2]))#[[],[1],[2],[1,2]]print(sub_set([1,2,3]))#[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]您只能修改下划线,如下面的示例所示。我的解决方案还差得远,真的不应该考虑:defs

python - 我怎样才能使这个 Python 递归函数返回一个平面列表?

看看这个简单的函数defprime_factors(n):foriinrange(2,n):ifn%i==0:returni,prime_factors(n/i)returnn这是prime_factors(120)的结果(2,(2,(2,(3,5))))我希望它返回一个平面元组或列表,而不是嵌套元组。(2,2,2,3,5)有没有简单的方法可以做到这一点? 最佳答案 defprime_factors(n):foriinrange(2,n):ifn%i==0:return[i]+prime_factors(n/i)return[n]

python - Python 3.5+ 中的递归类型

这个问题在这里已经有了答案:HowdoItypehintamethodwiththetypeoftheenclosingclass?(7个答案)关闭6年前。在Python3.5中,添加了类型注释(参见here)。有没有一种方法可以定义递归类型注释,例如树状结构?classEmployee(object):def__init__(self,name:str,reports:List[Employee]):self.name=nameself.reports=reports在上面,注释List[Employee]似乎不起作用。运行代码会导致此错误:NameError:名称“Employee

python - python中的慢递归

我知道这个主题讨论得很好,但我遇到了一个案例,我不太明白递归方法为什么比使用“reduce、lambda、xrange”的方法“慢”。deffactorial2(x,rest=1):ifx我知道python不会优化尾递归,所以问题不在于此。据我了解,生成器仍应使用+1运算符生成n个数字。所以从技术上讲,fact(n)应该像递归一样添加一个数字n次。reduce中的lambda将被调用n次,就像递归方法一样...所以因为我们没有尾调用优化在这两种情况下,堆栈都将被创建/销毁并返回n次。生成器中的if应该检查何时引发StopIteration异常。这让我想知道为什么递归方法仍然比另一种方法

python - 递归替换字典中的字符

如何将所有点.更改为下划线(在字典的键中),给定一个任意嵌套的字典?我尝试的是编写两个循环,但这样我就只能使用2级嵌套的字典。这...{"brown.muffins":5,"green.pear":4,"delicious.apples":{"green.apples":2{}...应该变成:{"brown_muffins":5,"green_pear":4,"delicious_apples":{"green_apples":2{}有什么优雅的方法吗? 最佳答案 你可以像这样写一个递归函数fromcollections.abcim

python - 进程完成,退出代码为 -1073741571

我有一个正在寻找欧拉路径的递归函数。我不认为函数的定义是相关的(但如果有人这么认为,我也会粘贴它)。问题是当我运行带有大图的函数时,我收到以下众所周知的错误:RuntimeError:maximumrecursiondepthexceededincmp即使没有上述问题,我也知道我需要使用以下命令增加递归限制importsyssys.setrecursionlimit(5000)问题是,无论我使用什么数字,我要么得到最大递归错误,要么我的程序只是停止,屏幕上没有输出但是:进程完成,退出代码-1073741571。我试图用谷歌搜索这段代码,但我能找到的唯一问题是Ruby中的问题。知道如何克