有关阿列夫数的讲解可以看看知乎:地址: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='')
递归写的有错,如果有大佬想用递归,可以在下面评论,一起探讨一下。