728x90
✏️ 문제
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
✏️ 풀이방법
1. for문으로 풀기
1) 0과1로 시작하는 리스트 선언
2) 앞에 두 수를 더한 값을 리스트에 추가
3) 리스트의 마지막 값 출력
2. 재귀함수로 풀기
1) 두 수를 더하여 리턴하는 함수를 선언
2) 구하려는 값에서 거꾸로 함수를 호출하며 리턴(재귀함수)
📌 코드
1) for문을 사용하여 반복
n = int(input())
fibo = [0,1]
for i in range(2,n+1):
fibo.append(fibo[i-1]+fibo[i-2])
print(fibo[n])
2) 함수정의 후 함수호출(재귀함수)
- 숫자로 리턴하는 방법
n = int(input())
def fibo(n):
if n == 1:
return 1
if n == 0:
return 0
return fibo(n-1)+fibo(n-2)
print(fibo(n))
- 변수로 리턴하는 방법
def fibonacci(n):
global result
if n <=1:
result = n
return result
result = fibonacci(n-1)+fibonacci(n-2)
return result
n = int(input())
result = 0
fibonacci(n)
print(result)
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
n = int(input())
fibonacci(n)
print(fibonacci(n))
📌 결과
10 #입력
55 #출력
🤔 시행착오.1
def fibonacci(n):
global result
if n <=1:
return n
result=fibonacci(n-1)+fibonacci(n-2)
return result
n = int(input())
result = 0
fibonacci(n)
print(result)
- 1입력하면 result가 1이 출력되어야하는데 0출력
- print가 result 변수로 반환하는데 if 문의 return값이 n 이라 result 값이 변경되지 않고 전역변수의 값 그대로 0이 출력됨
📒 다시보기
[Python] 18. 전역변수, 지역변수
전역변수 - 함수 밖의 전역 공간에 선언된 변수 - 프로그램 시작부터 종료까지 메모리에 상주하여 어디서든 접근이 가능한 변수 - 함수 내에서 참조 가능 - 함수 밖에서 참조하면 원래의 값으로
somin0416.tistory.com
'Python > online judge' 카테고리의 다른 글
백준 [2563.색종이] | Python (0) | 2023.11.17 |
---|---|
백준 [1157.단어 공부] | Python (0) | 2023.11.17 |
백준 [10798.세로읽기] | Python (0) | 2023.11.17 |
백준 [2738.행렬 덧셈] | Python (0) | 2023.11.17 |
백준 [2438.별찍기-1] | Python (0) | 2023.11.16 |