|
发表于 2019-10-20 16:15:25
|
显示全部楼层
两种方法:递归与迭代,前者在递归允许范围内效率更高,后者没有层数限制
递归:
import math
def Pingfang(numb,max_gen,count=0):
if numb >= max_gen**2:
return Pingfang(numb-max_gen**2,max_gen,count+1)
elif numb == 0:
return count
else:
return Pingfang(numb,max_gen-1,count)
def Juece(numb):
max_gen = int(math.sqrt(numb))
numb_list = []
while True:
if max_gen**2 < numb/3:
return min(numb_list)
numb_list.append(Pingfang(numb,max_gen))
max_gen -= 1
迭代:
import math
def Pingfang(numb,max_gen,count=0):
while True:
if numb >= max_gen**2:
numb -= max_gen**2
count += 1
elif numb == 0:
return count
else:
max_gen -= 1
def Juece(numb):
max_gen = int(math.sqrt(numb))
numb_list = []
while True:
if max_gen**2 < numb/3:
return min(numb_list)
numb_list.append(Pingfang(numb,max_gen))
max_gen -= 1
测试请使用Juece函数
|
|