- Date : 2021.03.04(목)
- Time : 10분
- 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다.
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597
. n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.
- 첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다.
- 첫째 줄에 n번째 피보나치 수를 출력한다.
fibo = [0,1]
N = int(sys.stdin.readline())
for i in range(2,N+1):
fibo.append(fibo[i-2]+fibo[i-1])
print(fibo[N])
: 항상 0번째는 0, 1번째는 1 이라는 것을 기억한 후 배열에 저장해둔 뒤 계속 더해가며 쌓아가는 풀이이다.
def getFibo(n):
if n <= 1 :
return n
return getFibo(n - 1) + getFibo(n - 2)
N = int(sys.stdin.readline())
print(getFibo(N))
: 여기 재귀 함수 부분에서도 n 이 1보다 같거나 작으면 피보나치 수가 n과 같다는 것을 이용하여 만들었다.