다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다.
int fibonacci(int n) {
if (n == 0) {
printf("0");
return 0;
} else if (n == 1) {
printf("1");
return 1;
} else {
return fibonacci(n‐1) + fibonacci(n‐2);
}
}
fibonacci(3)을 호출하면 다음과 같은 일이 일어난다.
예제 입력1
3 0 1 3
예제 출력1
1 0 0 1 1 2
n = int(input())
while n:
zeros = [1, 0]
ones = [0, 1]
num = int(input())
for i in range(2, num+1):
zeros.append(zeros[i - 1] + zeros[i - 2])
ones.append(ones[i - 1] + ones[i - 2])
print(zeros[num], ones[num])
n -= 1
# zeros = [1, 0, 1, 1, 2, 3 ...]
# ones = [0, 1, 1, 2, 3, 4 ...]
# [0][1][2][3][4][5]...
n = int(input())
for i in range(n):
num = int(input())
zero = 1
one = 0
tmp = 0
for _ in range(num):
tmp = one
one = one + zero
zero = tmp
print(zero, one)
🧷(나만 알아듣는) 추가설명
그렇다. 이건 피보나치의 함수가 아니라 피보나치의 함정이다.
재귀함수를 써야되는것처럼 보이지만 1도 안쓴다. for문이였던 것이다.
(출제자) 🔫😀