파이썬을 사용하여 fibonnaci 숫자를 계산할 수 없습니다.

py_ios_dev
import math

import sys

sys.setrecursionlimit(8000000)


f = {1:2,2:3,3:5}

def fib(n):

    if n in f:
        return f[n]
    if n == 1:
        return 2
    if n == 2:
        return 3
    if n == 3:
        return 5
    val = fib(n-1) + fib(n-2)
    if n not in f:
        f[n] = val
    return f[n]%1000000007

print(fib(4000))

이 코드를 완료하지 못하거나 명령 프롬프트가 충돌합니다. 어떻게하면 더 좋을까요?

이 프로그램을 완료하기 위해 활성화해야하는 설정이 있습니까?

코드 견습생

수학적 정의에서 직접 피보나치 수열을 구현하는 것은 재귀 솔루션의 문제를 보여주는 연습입니다. 현대 컴퓨터조차도 처리 할 수없는 재귀 함수 호출의 폭발적인 폭발로 이어집니다. 가장 큰 문제는의 큰 값에 대해 지수 횟수를 n계산 fib(1)한다는 입니다.

이 문제에 대한 몇 가지 해결책이 있습니다.

  1. 메모를 사용하여 이미 계산 된 값을 저장합니다. 그런 다음 계산 된 값을 찾아 추가 계산을 수행하지 않고 즉시 반환합니다. 이것은 메모가 어떻게 작동하는지 배우는 좋은 연습입니다. 그러나 여전히 불필요하게 재귀 함수 호출을 실행하기 때문에 여전히 비효율적입니다.

  2. 반복적 인 솔루션을 구현하십시오. 여기서는 자세히 설명하지 않겠습니다. fib(n)지수 시간 대신 선형 시간으로 구현할 반복 솔루션을 찾기 위해 몇 가지 연구를 수행하는 것이 좋습니다 .

  3. 닫힌 공식을 구현하십시오. 수학자들은 이미 fib(n)닫힌 공식으로 풀었 습니다. 이 솔루션은 아무리 많이 n사용 하더라도 일정한 시간이 걸립니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

pip를 사용하여 파이썬 모듈을 설치할 수 없습니다.

분류에서Dev

정규식 및 re.findall ()을 사용하여 숫자를 추출하고 합산 할 수 없습니다.

분류에서Dev

파이썬은 함수를 사용하여 변수 값을 변경할 수 없습니다.

분류에서Dev

enumerate를 사용하여 파이썬 범위 단계 크기를 사용할 수 없습니다.

분류에서Dev

함수를 사용하여 합계와 평균을 계산하기 위해이 C 프로그램에서 출력을 파악할 수 없습니다.

분류에서Dev

파이썬을 사용하여 자신의 숫자 체계를 만듭니다

분류에서Dev

csv 파일을 사용하여 파이썬에서 열의 합계를 어떻게 계산할 수 있습니까?

분류에서Dev

'in'연산자를 사용하여 '728'을 검색 할 수 없습니다.

분류에서Dev

Cygwin 및 OpenSSL을 사용하여 CMAC를 계산할 수 없음

분류에서Dev

apply 및 pandas DateOffset을 사용하여 계산에서 데이터 프레임의 숫자 인덱스를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

파이썬을 사용하는 동안 특수 문자가있는 파일을 인쇄 할 수 없습니다.

분류에서Dev

파이썬을 사용하여 텍스트 파일의 단락을 어떻게 계산할 수 있습니까?

분류에서Dev

함수를 사용하여 1부터 사용자가 파이썬으로 입력 한 숫자까지 모든 숫자의 평균을 계산하고 표시합니다.

분류에서Dev

Math.round 또는 Math.ceil을 사용하여 숫자를 반올림 할 수 없습니다.

분류에서Dev

파이썬과 for 루프를 사용하여 간단한 계산기를 만들고 싶습니다. 어떻게하면 작동 할 수 있습니까?

분류에서Dev

PHP에서 JQuery 자동 계산을 사용할 수 없습니다.

분류에서Dev

Bash : 계산을 사용하여 범위가있는 파일 이름을 인식 할 수 없습니다.

분류에서Dev

findContours opencv를 사용하여 숫자를 추출 할 수 없습니다.

분류에서Dev

Python을 사용하여 폴더 이름이 숫자로되어있는 경우 isdir을 사용하여 디렉터리를 검색 할 수 없습니다.

분류에서Dev

resample.ohlc () 메서드를 사용할 수 없음-DataError : 집계 할 숫자 유형이 없습니다.

분류에서Dev

어떻게 얻을 자바를 사용하여 웹 사이트의 숫자를 추출 할 수 있습니다?

분류에서Dev

Eclipse를 사용하여 Maven pom 파일을 이해할 수 없습니다.

분류에서Dev

나는 컴파일하고 파이썬 스크립트를 사용하여 Java 프로그램을 실행할 수 없습니다입니다

분류에서Dev

Haversine 공식을 사용하여 R의 위도와 경도를 사용하여 거리를 올바르게 계산할 수 없습니다.

분류에서Dev

Healthkit enableBackgroundDeliveryForType을 사용할 수 없으며 매시간 심박수를 계산할 수 없습니다.

분류에서Dev

bc를 사용하여 stdin에서받은 숫자를 합산 할 수 없습니다.

분류에서Dev

TokBox OTSubscriberKitNetworkStatsDelegate를 사용하여 대역폭을 계산할 수 있습니까?

분류에서Dev

cut 또는 R을 사용하는 다른 함수를 사용하여 계산하는 대신 합계를 수행 할 수있는 방법이 있습니까?

분류에서Dev

발생 횟수를 계산하는 열을 참조 할 수 없습니다.

Related 관련 기사

  1. 1

    pip를 사용하여 파이썬 모듈을 설치할 수 없습니다.

  2. 2

    정규식 및 re.findall ()을 사용하여 숫자를 추출하고 합산 할 수 없습니다.

  3. 3

    파이썬은 함수를 사용하여 변수 값을 변경할 수 없습니다.

  4. 4

    enumerate를 사용하여 파이썬 범위 단계 크기를 사용할 수 없습니다.

  5. 5

    함수를 사용하여 합계와 평균을 계산하기 위해이 C 프로그램에서 출력을 파악할 수 없습니다.

  6. 6

    파이썬을 사용하여 자신의 숫자 체계를 만듭니다

  7. 7

    csv 파일을 사용하여 파이썬에서 열의 합계를 어떻게 계산할 수 있습니까?

  8. 8

    'in'연산자를 사용하여 '728'을 검색 할 수 없습니다.

  9. 9

    Cygwin 및 OpenSSL을 사용하여 CMAC를 계산할 수 없음

  10. 10

    apply 및 pandas DateOffset을 사용하여 계산에서 데이터 프레임의 숫자 인덱스를 사용할 수없는 이유는 무엇입니까?

  11. 11

    파이썬을 사용하는 동안 특수 문자가있는 파일을 인쇄 할 수 없습니다.

  12. 12

    파이썬을 사용하여 텍스트 파일의 단락을 어떻게 계산할 수 있습니까?

  13. 13

    함수를 사용하여 1부터 사용자가 파이썬으로 입력 한 숫자까지 모든 숫자의 평균을 계산하고 표시합니다.

  14. 14

    Math.round 또는 Math.ceil을 사용하여 숫자를 반올림 할 수 없습니다.

  15. 15

    파이썬과 for 루프를 사용하여 간단한 계산기를 만들고 싶습니다. 어떻게하면 작동 할 수 있습니까?

  16. 16

    PHP에서 JQuery 자동 계산을 사용할 수 없습니다.

  17. 17

    Bash : 계산을 사용하여 범위가있는 파일 이름을 인식 할 수 없습니다.

  18. 18

    findContours opencv를 사용하여 숫자를 추출 할 수 없습니다.

  19. 19

    Python을 사용하여 폴더 이름이 숫자로되어있는 경우 isdir을 사용하여 디렉터리를 검색 할 수 없습니다.

  20. 20

    resample.ohlc () 메서드를 사용할 수 없음-DataError : 집계 할 숫자 유형이 없습니다.

  21. 21

    어떻게 얻을 자바를 사용하여 웹 사이트의 숫자를 추출 할 수 있습니다?

  22. 22

    Eclipse를 사용하여 Maven pom 파일을 이해할 수 없습니다.

  23. 23

    나는 컴파일하고 파이썬 스크립트를 사용하여 Java 프로그램을 실행할 수 없습니다입니다

  24. 24

    Haversine 공식을 사용하여 R의 위도와 경도를 사용하여 거리를 올바르게 계산할 수 없습니다.

  25. 25

    Healthkit enableBackgroundDeliveryForType을 사용할 수 없으며 매시간 심박수를 계산할 수 없습니다.

  26. 26

    bc를 사용하여 stdin에서받은 숫자를 합산 할 수 없습니다.

  27. 27

    TokBox OTSubscriberKitNetworkStatsDelegate를 사용하여 대역폭을 계산할 수 있습니까?

  28. 28

    cut 또는 R을 사용하는 다른 함수를 사용하여 계산하는 대신 합계를 수행 할 수있는 방법이 있습니까?

  29. 29

    발생 횟수를 계산하는 열을 참조 할 수 없습니다.

뜨겁다태그

보관