首页 > 编程知识 正文

python运行内存不足,python中内存越大运行越快吗

时间:2023-05-06 11:00:55 阅读:22461 作者:134

要确定内存错误,请在limit=100下运行代码并打印链。

你可能想序列化递归代码:

lengths={1: 1}

defCollatz(I ) :

i0=i

acc=0

while True:

if i in lengths:

lengths[i0]=acc lengths[i]

返回ACC lengths [ I ]

acc =1

I=(I*31 ) if i % 2 else i //2

长整型=1

foriinrange (1,100000 ) :

c=Collatz(I ) )

if c longest:

longest=c

打印(I,c ) ) )。

当然,可以通过多种方法进行优化,但可以在4秒以内产生所期待的结果

编辑:

你的方法列一个清单。 这个名单的长度达到了历史上最高的期限。 如果limit=100,则这是9232。 这不是很多。 但是,如果极限=1000000,则是56991483520 (以704511开始的链),这真的是新人。 对于int32或更高的数组,此存储器

这是一条麻烦的链条。 704511、2113534、1056767、3170302、1585151、4755454、2377727、7133182、3596591、10699774、5349887、16049662、8024831 54167614、27083807 182815702、91407851、274223554、137111777、411335332、205667666、102833833、308501500、154250750 390447215、11713416365、17567075、178670780、1976639030、988319515、2964958546、1482479273、4449273 1677789183、500333 11257576990、562878495、16886365486、84443182743, 2532954443 3561967720、1780983860、890491930、445245965、1335737896、667868948、333934474、166967237、500901712、2504555 2934971、8804914、4402457、13207372、6603686、3301843、9905530、4952765、14858296、744448296 478897、12536692、6268346 3525946、1762973、5288920、2644460、132230 231266、1115633、3346900、1673450、836725、2510176、1255088、627544、31313 88249、264748、132374、66187、198562、99281、297844、148922、74661、223384、111692、55846、55846 23561、70684、35555 29821、89464、44732、22366、11183、33550 8928、42464、21232、10616、5308、2654、1327、3982、1991、5974、2987、888 100、50、25、76、38、19、5 8、29、88、44、22、11、34、17、52、26、13、40、20

使用您准确的递归思想,但运行dict (稀疏)而不是列表时没有问题)。

lengths={1: 1}

defCollatz(I ) :

ifiinlengths : returnlengths [ I ]

j=(I*31 ) if i % 2 else i //2

c=Collatz(j ) 1

lengths [i]=c

返回c

长整型=1

foriinrange (1,100000 ) :

c=Collatz(I ) )

if c longest:

longest=c

打印(I,c ) ) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。