python - 递归添加到集合

标签 python python-3.x recursion

我正在尝试用这个函数def friends(self, name, degree): 来思考递归函数。这个的目的是返回指定度数的所有 friend 的集合(用于地址簿)。它是名为 class SocialAddressBook: 的更大类的最后一部分。此类中的“学位”允许用户“查询” friend 的 friend :学位一是直接 friend ,学位二是 friend 的 friend ,等等。我的代码是

def friends(self, name, degree):
    fs = set()
    if degree == 0:
        return set()
    if degree == 1:

据我所知…… 还有更多背景信息:

Transitive friendship:

Fred → Barb → Jane → Emma → Lisa
Fred → Sue
              Jane → Mary

所以我的测试是:a.friends('Fred', 1) == {'Barb', 'Sue'}

a.friends('Fred', 2) == {'Barb', 'Jane', 'Sue'}

a.friends('Fred', 3) == {'Mary', 'Barb', 'Jane', 'Sue', 'Emma'}

a.friends('Fred', 4) == {'Barb', 'Emma', 'Mary', 'Lisa', 'Sue', 'Jane'}

它只会上升到 4 级。既然我知道它会上升到多少级,那么我应该递归地还是手动执行此操作?

如果有人能为我指出正确的方向,告诉我如何递归完成这个,那就太棒了,谢谢!

最佳答案

我想说的是迭代地执行此操作:让它将 friend 添加到当前列表 n 次,其中 n 是一个输入参数。

fs = set(self)
for i in range (n):
    wider = set()
    for chum in fs.copy():
        for new_chum in chum.friend_list:
            fs += new_chum

在每个级别,从当前集合的 friend 中创建一个更广泛的集合。完成所有这些操作后,将它们添加到 friend 组中。重复 N 次。

关于python - 递归添加到集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43078776/

相关文章:

python - 如何在 Python 中捕获特定的 HTTP 错误?

python - python错误,尝试创建结构列表时语法无效

python - 如何使类属性不可变?

python - 移除和更换打印品

Javascript 递归地排序对象和嵌套对象以及数组

python - 无法使用 pip 安装 lxml

python - 在python中下载文件

python - 为 Pandas Dataframe Columns 中的两个列表中的每个元素运行一个函数

javascript - 在循环递归期间,索引计数丢失

javascript - 在 JavaScript 中使用递归更新嵌套的 json 对象