피보나치 수열은 첫 번째 항과 두 번째 항이 각각 0과 1이며, 세 번째 항부터는 바로 앞의 두 항을 더한 값이 되는 수열입니다. 즉, 0, 1, 1, 2, 3, 5, 8, 13, 21… 형태로 이어집니다.
이 글에서는 C#을 사용하여 피보나치 수열을 화면에 출력하는 방법을 단계별로 살펴보겠습니다.
기본 아이디어
피보나치 수열의 첫 두 숫자는 항상 0과 1로 고정되어 있으므로, 먼저 이 두 값을 초기화합니다.
int val1 = 0, val2 = 1;
변수 n은 출력할 피보나치 수의 개수를 의미합니다. 처음 100개의 피보나치 수를 얻고 싶다면 n을 100으로 설정하면 됩니다.
C# 전체 코드 예제
using System;
public class Demo {
public static void Main(string[] args) {
int val1 = 0, val2 = 1, val3, i, n;
n = 40;
Console.WriteLine("피보나치 수열 출력:");
Console.Write(val1 + " " + val2 + " ");
for(i = 2; i < n; ++i) {
val3 = val1 + val2;
Console.Write(val3 + " ");
val1 = val2;
val2 = val3;
}
}
}
코드 설명
val1, val2 : 수열의 첫 두 항인 0과 1로 초기화됩니다.
n : 출력할 항의 개수입니다. 위 예제에서는 40으로 설정했습니다.
for 루프 : 세 번째 항부터 n번째 항까지 반복하면서 새로운 값을 계산합니다.
val3 : 앞의 두 항(val1 + val2)을 더한 값으로, 다음 피보나치 수가 됩니다.
실행 결과
피보나치 수열 출력:
0 1 1 2 3 5 8 13 21 34 55 89 144 ...
정말 큰 피보나치 수를 다루려면?
C#의 int 타입은 최대 2,147,483,647까지만 표현할 수 있습니다. 그런데 피보나치 수는 놀랍도록 빠르게 커지기 때문에 47번째 항부터 int 범위를 초과하게 됩니다. 따라서 더 큰 피보나치 수를 정확하게 계산하려면 long 타입을 사용하거나, 크기 제한이 없는 System.Numerics.BigInteger를 사용하는 것이 좋습니다.
다음은 BigInteger를 사용하여 처음 100개의 피보나치 수를 출력하는 예제입니다.
using System;
using System.Numerics;
public class Demo {
public static void Main(string[] args) {
BigInteger val1 = 0, val2 = 1, val3;
int n = 100;
Console.WriteLine("처음 100개의 피보나치 수:");
Console.Write(val1 + " " + val2 + " ");
for(int i = 2; i < n; ++i) {
val3 = val1 + val2;
Console.Write(val3 + " ");
val1 = val2;
val2 = val3;
}
}
}
BigInteger는 .NET Framework 4.0 이상에서 System.Numerics 네임스페이스를 통해 제공되며, 메모리가 허용하는 한 어떤 크기의 정수든 다룰 수 있습니다. 이를 활용하면 100번째, 1000번째 피보나치 수처럼 매우 큰 값도 오버플로우 걱정 없이 정확하게 계산할 수 있습니다.