【发布时间】:2020-01-22 21:39:03
【问题描述】:
给定以下树:
# 'Mobs'
# / | \
# 'NPC' 'Enemies' 'Heroes'
# / / | \ \
# 'Andrew' 'Slime' 'Goblin' 'Dragon' 'Human'
# \
# 'Wyrm'
tree = ('Mobs', [('NPC', [('Andew', [])]), ('Enemies', [('Slime', []), ('Goblin', []), ('Dragon', [('Wyrm', [])])]), ('Heroes', [('Human', [])])])
每个节点都是一个元组,由 [0] 处的字符串和 [1] 处的可能子节点列表组成。 以下函数成功返回计数:
def how_many(node):
count = 1
for i in node[1]:
count = count + how_many(i)
return count
我试图了解它的确切作用。有人向我解释说,我需要将自己想象成“堆栈”以了解递归是如何工作的。让我试着表达我的理解: 由于程序在第一次调用自己时没有所有信息,因此它足够强大,可以暂停所有操作,将它们堆叠起来,以便保留它们将执行的顺序,一直持续到它到达了基本情况——当树节点没有子节点时在我们的函数中——并在我们的计数变量中产生正确的堆积值,以便在循环完成时它可以返回它。
我说的对吗? 如果可能的话,我需要有人用文字逐步解释该功能的作用。
【问题讨论】: