난이도 : 브론즈 Ⅱ
사용언어 : 파이썬
단계별로 풀어보기 > 재귀
https://www.acmicpc.net/problem/10870
10870번: 피보나치 수 5
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가
www.acmicpc.net
- 최초 풀이
def fibo(n) :
lst = [0,1]
if n == 0 : return lst[0]
if n == 1: return lst[1]
while n >= 2 :
a = (lst[-1]+lst[-2])
lst.append(a)
n = n-1
return lst[-1]
n = int(input())
print(fibo(n))
아이디어
[0,1,1,2,3,5,···] 리스트를 직접 만들고, 그 리스트의 n인덱스 값이 출력되도록 했다.
리스트를 만든 방법은 n이 2보다 크거나 같을 경우, 리스트의 마지막 두 수를 더한 값을 추가하도록 했다. (while 반복)
- 재귀호출함수 개념 이해 후 풀이
def fibo(n) :
if n == 0 : return 0
elif n == 1 : return 1
else : return fibo(n-1) + fibo(n-2)
n = int(input())
print(fibo(n))
아이디어
함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출함수라고 한다.
해당 함수가 계속 반복되지 않으려면 함수 내 종료조건을 필수로 잡아줘야한다!
현재 fibo 함수의 경우, n의 값이 0 또는 1일 경우 해당 값을 반환하면서 함수가 종료된다.
재귀함수를 잘 이용하면, 프로그래밍에 유용할 것 같다
'🔖_Problem Solving > 백준' 카테고리의 다른 글
[백준 25314] 코딩은 체육과목 입니다. (0) | 2023.07.30 |
---|---|
[백준 25304] 영수증 (0) | 2023.07.30 |
[백준 11382] 꼬마 정민 (0) | 2023.07.30 |
[백준 2941번] 크로아티아 알파벳 (0) | 2022.03.16 |
[백준 1110번] 더하기 사이클 (0) | 2022.03.16 |
댓글