Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

반복문을 활용한 C++ 피보나치 수열 구현 방법

피보나치 수열은 첫 번째와 두 번째 항이 각각 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로 다음 항을 계산한 뒤, xy를, yz를 대입하여 두 변수를 한 칸씩 앞으로 이동시킵니다. 이 과정이 반복되면서 수열이 자연스럽게 만들어집니다.

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를 순서대로 출력합니다. 이처럼 반복문을 활용하면 재귀 호출 없이도 간단하고 효율적으로 피보나치 수열을 구현할 수 있습니다.