例如: 集合{‘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')