有人可以解释双递归python吗?

用户名

我试图理解双重递归,但我什么也没得到。

def f(s):
    if len(s) <= 1:
        return s
    return f(s[1:]) + s[0]
print f('world')

借用

如果正确,上述代码将执行以下操作:

  1. f(s [1:])+ s [0] ==> f(orld)+ w
  2. f(s [1:])+ s [0] ==> f(rld)+ o
  3. f(s [1:])+ s [0] ==> f(ld)+ r
  4. f(s [1:])+ s [0] ==> f(d)+ l <==此处len(s)== 1因此s = d,

然后:

  1. d + l = dl
  2. dl + r = dlr
  3. dlr + o = dlro
  4. dlro + w =​​ dlrow

因此将如上所述打印dlrow。

当您将其设为双递归时,我无法理解代码:

def f(s):
    if len(s) <= 1:
        return s
    else:
        return f(f(s[1:])) + s[0] #Note double recursion
print f('world')

有人可以向我解释这种双重递归如何工作吗?

均衡器

在2019年,使用在线编译器(例如www.onlinegdb.com/online_python_compiler),上述打印行不起作用。这是工作代码:

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'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有人可以解释cvPtr的OpenCV文档吗?

来自分类Dev

有人可以解释堆栈上下文吗?

来自分类Dev

有人可以解释堆栈上下文吗?

来自分类Dev

有人可以解释i +++ x吗?

来自分类Dev

有人可以解释这本词典的行为吗?

来自分类Dev

python tuple,有人可以解释这种行为吗?

来自分类Dev

有人可以解释redis setbit命令吗?

来自分类Dev

有人可以解释吗?

来自分类Dev

有人可以解释Selenium中的Screenshot吗?

来自分类Dev

有人可以解释这个(void **)&d_in吗?

来自分类Dev

有人可以向我解释此代码吗?

来自分类Dev

VBA中的数组下标-有人可以解释吗?

来自分类Dev

奇怪的红宝石行为。有人可以解释吗?

来自分类Dev

有人可以解释一下这种递归的工作方式吗?

来自分类Dev

有人可以解释Shell Shock Bash代码吗?

来自分类Dev

有人可以全面解释WebRTC统计API吗?

来自分类Dev

有人可以解释递归插入排序的工作原理吗?

来自分类Dev

有人可以解释__set和__get的重载吗?

来自分类Dev

有人可以很好地解释Dagger 2吗?

来自分类Dev

有人可以为我解释这个递归吗?

来自分类Dev

有人可以解释WaitForSeconds()吗?

来自分类Dev

有人可以解释如何大写Python列表中的所有元素吗?

来自分类Dev

有人可以解释这种反向字符串的递归Java方法吗?

来自分类Dev

JAVA:有人可以向我解释此递归代码吗?

来自分类Dev

有人可以解释此递归如何工作吗?

来自分类Dev

有人可以解释所有代码的含义吗?PYTHON

来自分类Dev

有人可以在python中解释这个递归函数的输出吗?

来自分类Dev

有人可以解释输出吗?

来自分类Dev

有人可以解释这个python代码的作用吗?

Related 相关文章

热门标签

归档