한 줄에 숫자가 있고 목록이나 배열을 사용하지 않는 피보나치 수열
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
하면 시퀀스의 다음 숫자를 계산하는 함수를 작성해야 합니다. 문제가있는 경우 질문을 수정하여 코드를 표시하고 추가 도움을 요청하세요.