白白白白丶白 发表于 2020-8-16 15:54:31

idle

>>> for i in range(1,1111):
        if 100 < f(i) < 1000:
                print(f(i), end= ' ')

       
144 233 377 610 987



执行完这个,idle的 命令提示符怎么不出来

zltzlt 发表于 2020-8-16 15:55:01

你的 f 是什么?

白白白白丶白 发表于 2020-8-16 15:59:22

zltzlt 发表于 2020-8-16 15:55
你的 f 是什么?

上面定义的求斐波那契数列的函数

因为这个函数的原因吗

zltzlt 发表于 2020-8-16 15:59:57

白白白白丶白 发表于 2020-8-16 15:59
上面定义的函数

{:9_229:}我是叫你把函数体发上来

白白白白丶白 发表于 2020-8-16 16:01:43

zltzlt 发表于 2020-8-16 15:59
我是叫你把函数体发上来

>>> def f(n):
        if n == 1 or n == 2:
                return 1
        else:
                return f(n-2) + f(n-1)

zltzlt 发表于 2020-8-16 16:06:12

白白白白丶白 发表于 2020-8-16 16:01


因为你的函数执行效率太慢了,这样即可:

>>> from functools import lru_cache
>>> @lru_cache(maxsize=1200)
def f(n):
      if n == 1 or n == 2:
                return 1
      else:
                return f(n-2) + f(n-1)

      
>>> for i in range(1,1111):
      if 100 < f(i) < 1000:
                print(f(i), end= ' ')

               
144 233 377 610 987

白白白白丶白 发表于 2020-8-16 16:08:26

zltzlt 发表于 2020-8-16 16:06
因为你的函数执行效率太慢了,这样即可:

>>> from functools import lru_cache
>>> @lru_cache(maxsize=1200)

这个是什么

zltzlt 发表于 2020-8-16 16:09:32

白白白白丶白 发表于 2020-8-16 16:08
这个是什么

https://fishc.com.cn/thread-154150-1-1.html
页: [1]
查看完整版本: idle