python利用递归方法求5!的和_python利用递归方法实现求集合的幂集

什么是集合的幂集?

就是原集合中所有的子集(bai包括全集du和空集)构成的集族。可数集是zhi最小的无限集; 它的幂集和实数dao集一一对应(也称同势),是不可数集。

不是所有不可数集都和实数集等势,集合的势可以无限的大。如实数集的幂集也是不可数集,但它的势比实数集大。 设x是一个有限集,|x| = k,则x的幂集的势为2的k次方。

代码

def powset(s):

#创建列表a存储s中的元素

a=[]

for i in s:

a.append(i)

#判断s中是否只有一个元素,作为递归的终点

if len(a)==1:

return set([frozenset(),frozenset(a)])

powset=set()

#遍历s中的每一个元素

for i in range(len(a)):

s.remove(a[i])

temp = set()

#取s中的这一个元素去掉,得到集合s的下一层(相当于s-1),认为s-1幂集已知。

#将去掉的元素与s-1幂集中每一个元素都求并,得到新集合temp,temp和s-1的幂集求并便得到s的幂集

for j in powset(s):

temp.add(j.union({a[i]}))

powset = powset(s).union(temp)

s.add(a[i])

return powset

#验证

s=set([1,2,3])

print(powset(s))

#结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值