|
发表于 2019-10-14 15:56:09
|
显示全部楼层
我这个数大了也爆炸...
而且自己有的地方也理解- list_sum=[]
- dict_res={}
- temp=input('请输入一个整数:')
- def x(each_1,list_n,n,temp):#递归求值
- global list_sum
-
- for each_2 in range(0,n+1):
- if each_1 + each_2 == n:
- if each_2==0:
- list_sum.append(each_1)
- count=len(list_sum)
-
- if sum(list_sum)==temp:#这里递归到最后有个值是1,不知道怎么去掉,所以加了个if,求指点
- dict_res[count]=list_sum
- list_sum=[]
- continue
-
- elif each_2 in list_n:
- list_sum.append(each_2)
- count=len(list_sum)
-
- if sum(list_sum)==temp:
- dict_res[count]=list_sum
- list_sum=[]
- continue
-
- else:
- list_sum.append(each_1)
- n-=each_1
- for each_1 in list_n:
- return x(each_1,list_n,n,temp)
- def sumn(list_n,n,temp):
- global count
- for each_1 in list_n:
- x(each_1,list_n,n,temp)
-
- def fun(temp):
- global dict_res
- n=temp+1
- list_n=[]
- num=int(n**0.5)
- list_x=[x for x in range(1,num+1)]
-
- for each in list_x:
- list_n.append(each**2)
- sumn(list_n,n,temp)
- #准备输出结果及解释
- explain=''
- i=1
- for each in dict_res[min(dict_res)]:
- if i<len(dict_res[min(dict_res)]):
- explain=explain+str(each)+'+'
- i+=1
- else:
- explain=explain+str(each)
-
- explain=str(sum(dict_res[min(dict_res)]))+'='+explain
-
- print('输出:%d\n解释:%s'%(min(dict_res),explain))
- dict_res={}#初始化,为下轮做准备
- fun(int(temp))
复制代码 不了.. |
|