python 递归函数问题

Mr.chan ?? ?? 2020-06-30 06:48:50

python 递归问题
def partition_tree(n, m):
"""Return a partition tree of n using parts of up to m."""
if n == 0:
return tree(True)
elif n < 0 or m == 0:
return tree(False)
else:
left = partition_tree(n-m, m)
right = partition_tree(n, m-1)
return tree(m, [left, right])
>>> partition_tree(2, 2)

上面这段代码中,当传递(2,2)到partition_tree 函数里面的时候,我的理解是就会执行else里面的语句,那么当left再次呼叫 partition_tree这个函数的时候,n-m就变成0,0的就是就会执行 n == 0这个语句,那么就是代表else里面 的right语句和retrun 语句就不会执行。这是我的理解,我觉得我理解是错的,请问有人解释一下吗?
...全文
109 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2020-06-30
  • 打赏
  • 举报
回复
你的理解没有问题,只是你这个else不执行说的是这一层的else不执行,回退到递归上一级时,还是有可能会执行的。 好比你家两室一厅加一超大阳台,去一室相当于n==0 ,去二室相当于n<1...,去阳台相当于else 现在你家的阳台里又有两个一模一样的两室一厅,你先去阳台左边的两室一厅,发现n==0了,这时你进去tree,tree完事后你是不是先回到阳台?这时阳台右边的两室一厅还能进去吗?当然能去。 所以你要最终回到你家大门,是不是得要一级一级的从房子里的房子退到阳台再出门呢?

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧