피보나치 수열은 첫 번째와 두 번째 항이 각각 0과 1이며, 세 번째 항부터는 바로 앞의 두 항을 더한 값이 되는 수열입니다. 즉, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34와 같은 형태로 이어집니다. 이번 글에서는 재귀 함수가 아닌 반복문(iteration)을 사용하여 C++로 피보나치 수열을 구하는 방법을 알아보겠습니다. 반복문 방식은 재귀 호출에 비해 메모리 사용량이 적고 실행 속도가 빠르다는 장점이 있습니다.
예제 코드
#include <iostream>
using namespace std;
void fib(int num) {
int x = 0, y = 1, z = 0;
for (int i = 0; i < num; i++) {
cout << x << " ";
z = x + y;
x = y;
y = z;
}
}
int main() {
int num;
cout << "Enter the number : ";
cin >> num;
cout << "\nThe fibonacci series : " ;
fib(num);
return 0;
}실행 결과
Enter the number : 10 The fibonacci series : 0 1 1 2 3 5 8 13 21 34
코드 설명
위 프로그램에서 피보나치 수열을 실제로 계산하는 핵심 로직은 fib() 함수 안에 들어 있습니다.
void fib(int num) {
int x = 0, y = 1, z = 0;
for (int i = 0; i < num; i++) {
cout << x << " ";
z = x + y;
x = y;
y = z;
}
}이 함수의 동작 원리를 살펴보면 다음과 같습니다.
1. 변수 초기화: x는 현재 항(0으로 시작), y는 다음 항(1로 시작), z는 두 항의 합을 임시로 저장하는 변수입니다.
2. 반복 처리: for문이 num번 실행되면서 매번 현재 값 x를 출력합니다.
3. 값 갱신: z = x + y로 다음 항을 계산한 뒤, x에 y를, y에 z를 대입하여 두 변수를 한 칸씩 앞으로 이동시킵니다. 이 과정이 반복되면서 수열이 자연스럽게 만들어집니다.
main() 함수의 역할
main() 함수에서는 사용자로부터 출력할 항의 개수를 입력받습니다. 이후 fib() 함수를 호출하여 피보나치 수열을 화면에 출력합니다.
cout << "Enter the number : "; cin >> num; cout << "\nThe fibonacci series : " ; fib(num);
예를 들어 사용자가 10을 입력하면, 프로그램은 0부터 시작하여 총 10개의 피보나치 수인 0 1 1 2 3 5 8 13 21 34를 순서대로 출력합니다. 이처럼 반복문을 활용하면 재귀 호출 없이도 간단하고 효율적으로 피보나치 수열을 구현할 수 있습니다.