한 줄에 숫자가 있고 목록이나 배열을 사용하지 않는 피보나치 수열

Nov 18 2020

저는 일반적으로 파이썬과 프로그래밍에 익숙하지 않습니다. 올해는 프로그래밍 수업이있는 첫해이므로 한 달 전에 시작했다고 말하고 싶습니다. 지난주에 첫 번째 과제를 받았으며 다음 과제를 제외하고 대부분의 과제를 수행했습니다.

사용자가 n을 입력하는 피보나치 수열에서 n 개의 숫자를 생성합니다. 이 숫자를 화면에 씁니다.

한 줄에 숫자를 인쇄하십시오.

팁: print (value, end = '')

목록이나 배열을 사용하지 마십시오.

이것은 마지막 질문이고이 질문은 다른 질문보다 훨씬 더 어렵습니다. 나는 몇 가지를 시도했지만 요청받은 것을 거의하지 않았습니다. 나는 진정으로 내가 어떻게 시작해야할지 전혀 모른다.

답변

1 LeonardoStefan Nov 18 2020 at 17:02

먼저 피보나치 (0)와 피보나치 (1)의 결과를 확인, 인쇄 및 저장 한 다음 계산 된 마지막 2 개를 사용하여 다음 피보나치 값을 계산하는 루프를 만들고 마지막으로 계산 된 마지막 2 개의 변수를 업데이트해야합니다.

# Print Fibonacci(0)
if n>=0:
    print (1, end =', ')
    f2 = 1
# Print Fibonacci(1)
if n>0:
    print (1, end =', ')
    f1=1
# Print Fibonacci(n) ; n>1

if n>1:
    for i in range (2, n+1):
        result = f1+f2
        print(result, end=', ')
        # updating last two variables
        f2 = f1
        f1 = result
superTysonM Nov 18 2020 at 17:28

언급되지는 않았지만 이전 피보나치 수를 '기억'하여 시퀀스를 더 빠르게 생성 할 수 있습니다.

def fibonacci(n, _cache={}):
    if n in _cache: # Check to see if the number has been done
        return _cache[n] # Return the pre-done number
    elif n > 1:
        return _cache.setdefault(n, fibonacci(n-1) + fibonacci(n-2)) # Call this function recursively to generate the previous Fibonacci numbers
    return n

n = int(input("n = "))
for i in range(n):
    print(fibonacci(i), end=', ')
Tony Nov 18 2020 at 16:54

루프, 설정된 횟수를 반복하는 방법에 대해 생각하고 "팁"에 제공된 print 문을 사용해야합니다.

의사 코드에서 :

next_in_sequence = 1
loop_count = 1
while loop_counter <= number_entered:
    next_in_sequence = caclulate_next_fibonacci(next_in_sequence)
    print (next_in_sequence, end = '')
    loop_counter = loop_counter + 1

이것을 파이썬으로 작성 caclulate_next_fibonacci하면 시퀀스의 다음 숫자를 계산하는 함수를 작성해야 합니다. 문제가있는 경우 질문을 수정하여 코드를 표시하고 추가 도움을 요청하세요.