【发布时间】:2016-05-19 13:45:13
【问题描述】:
第一次在这里发帖。自学python,并对如何使用递归解决以下问题感到好奇。 我们有一家公司,每位员工最多有 7 份报告。给定组织的深度 x,求包括 CEO 在内的最大员工人数。这基本上是找到二叉树的最大节点数,除了以 2 为基数,我们以 7 为基数。
我能够使用公式 (b**(d+1))/(b-1) 线性求解,其中 b 是基数,d 是树的深度。
def MaxNodes(d):
minions = ((7**(d+1)) - 1) / 6
return minions
我也迭代解决了:
def answer(x):
minions = 1
for levels in range(x):
if (levels == 0):
minions = 7
else:
minions += (minions * 7)
return minions + 1
所以我们在级别 0 中几乎有值 1,从级别 1 开始,我们从值 7 开始,并不断乘以 7 并添加到之前的结果: 1 + (7x1) + (7x7) + (49x7) ... 很抱歉,如果这很简单,但我不知道如何递归地解决这个问题。
提前感谢您的帮助。
【问题讨论】:
-
MaxNodes和answer不要做同样的事情...... -
未经测试且不递归:
sum([7**i for i in range(depth)]) -
@KlausD。这个问题已经有了确切的公式:
((7**(depth+1)) - 1) // 6,你不需要在sum()中使用[]。 -
你是对的@TadhgMcDonald-Jensen,第二次看我不知道为什么我在那里加了一个加法,应该一直乘以 7。谢谢你指出这一点。