阿列夫数算法题

有关阿列夫数的讲解可以看看知乎:地址: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='')

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