2024-10-03 23:31:13 发布
网友
我试图理解双递归,但我什么也做不到。在
def f(s): if len(s) <= 1: return s return f(s[1:]) + s[0] print f('world')
dlrow
如果正确,上述代码将执行以下操作:
然后:
所以dlrow将按上面所示打印。在
当您将代码设为双递归时,我无法理解它:
有人能给我解释一下这个双递归是怎么工作的吗?在
2019年,使用在线编译器,如www.onlinegdb.com/online_python_编译器, 上述打印线不工作。以下是工作代码:
import inspect def f(s): print(" " * (len(inspect.stack())-2), '>>', s) if len(s) <= 1: print( " " * (len(inspect.stack())-2), '<<', s) return s else: retval = f(f(s[1:])) + s[0] #Note double recursion print( " " * (len(inspect.stack())-2), '<<', retval) return retval print(f('world'))
这里有一种简单的方法来检测递归代码
import inspect def f(s): print " " * (len(inspect.stack())-2), '>>', s if len(s) <= 1: print " " * (len(inspect.stack())-2), '<<', s return s else: retval = f(f(s[1:])) + s[0] #Note double recursion print " " * (len(inspect.stack())-2), '<<', retval return retval print f('world')
印刷品
2019年,使用在线编译器,如www.onlinegdb.com/online_python_编译器, 上述打印线不工作。以下是工作代码:
这里有一种简单的方法来检测递归代码
印刷品
^{pr2}$相关问题 更多 >
编程相关推荐