Python - 为什么这会进行 8 次递归调用?

标签 python

目前正在复习即将到来的考试,并给出了这道练习题,答案是 8,但我不确定为什么。有人可以为我分解吗?我试过追踪它,但它很快就变得令人困惑呵呵。

def confuse(s):     
   if len(s) <= 1:        
      return s     
   x = len(s) // 2     
   return confuse(s[:x]) + confuse(s[x:]) 

print(confuse('annoy')) 

问题:排除confuse('annoy')的调用,在这个函数终止之前进行了多少次递归调用?

谢谢!

最佳答案

你应该把它画成一棵树:

混淆('烦'):

+- 'an' (half of annoy, rounded down)
|  +- 'a'
|  \- 'n'
\- 'noy'
   +- 'n'
   \- 'oy'
      +- 'o'
      \- 'y'

这是你的八个电话。

关于Python - 为什么这会进行 8 次递归调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53655787/

相关文章:

python - 验证导致错误

python - 将绘图中的图例设置为 Bokeh 中的列名称

python - 在线程中引发异常

python - 向图像添加高斯噪声

python - Spyne、TLS 和服务器到客户端的请求

javascript - AJAX 发布后 django 模板未重新加载

python - 将 django 项目迁移到新服务器,并且另一个 django 项目的 postgresql 数据库已存在

python - python字符串索引访问的时间复杂度?

Python、Pygame 鼠标事件

python - 如何在Python中打印异常?