递归求幂集(python)
作者:互联网
一、问题描述
例如: 集合{‘A’, 'B', 'C}的幂集为{‘ ’,‘A’, 'B', 'C', 'AB', 'AC', 'BC', 'ABC'},由高中知识可知为2^n个
二、思路分析:
很明显,我们可以使用递归来解决,算法思想如下:
三、源代码:
set_null = set(' ') #空集为一个空格
def PowerSet(A):
global set_null
if len(A) == 0: #递归退出条件
return set_null
else:
a = A.pop()
# print("去除了" + a)
p = PowerSet(A)
for b in p:
c = b + a
p = p | set([c]) #加[]是为了让c整体为一个集合元素 例{'ABC'}
return p
if __name__ == '__main__':
A = {'A', 'B', 'C', 'D'}
P = PowerSet(A)
print("集合A的幂集为:")
for p in P:
if p == ' ':
print('null', end='\t')
print(p, end='\t')
四、运算结果:
标签:__,幂集,set,递归,python,print,null,PowerSet 来源: https://blog.csdn.net/younger77/article/details/123585860