阿列夫数算法题

有关阿列夫数的讲解可以看看知乎:地址:https://zhuanlan.zhihu.com/p/367528351

题目描述

冯•诺依曼不单是一位计算机科学家,也是很有名的数学家,他用集合来
定义自然数系统,定义如下:
 0 = {} = {}
 1 = {0} = {{}}
 2 = {0, 1} = {{}, {{}}}
 3 = {0, 1, 2} = {{}, {{}}, {{}, {{}}}}
 ……
 请根据上述定义,写出递归函数,由用户输入一个自然数N,输出该自
 然数对应的集合表示。例如,如输入为2,则输出为{{}, {{}}}。

测试说明

测试输入:
2
预期输出:
{{}, {{}}}

Python代码

number = int(input())
# 定义一个列表,用来存放每一个的值
set_list=['{}']
# 这里可以不要if...else
if number==0:
    print('{}',end='')
    exit(0)
else:
    k=1
    for i in range(number):
        strs='{'
        for s in set_list:
            if(len(set_list)<2):
                strs+=(s)
            else:
            	#判断是否是它的前一个
                if set_list[-1]==s:
                    strs += (s)
                    break # 结束本次循环,因为已经把列表遍历完了
                strs += (s+', ')
        strs+='}'
        set_list.append(strs)
        k+=1
# 输出最后一个即为答案
print(set_list[-1],end='')

递归写的有错,如果有大佬想用递归,可以在下面评论,一起探讨一下。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值