// C# Factorial 구현
class Program
{
private const int FACTORIAL_NUMBER = 5;
static void Main(string[] args)
{
int answer = Factorial(FACTORIAL_NUMBER); // FACTORIAL_NUMBER 팩토리얼을 구함
Console.WriteLine(answer); // 120을 출력
Console.ReadLine();
}
// Factorial에서 음수는 정의되지 않기 때문에 고려하지 않음(음의 정수에 근접하면 양의 무한대로 발산)
static public int Factorial(int value)
{
int answer = value;
if (value <= 1)
{
return 1;
}
return answer *= Factorial(--value);
}
}
// C# 피보나치수열 구현
class Program
{
private const int FIBONACCI_NUMBER = 10;
static void Main(string[] args)
{
int answer = Fibonacci(FIBONACCI_NUMBER); // FIBONACCI_NUMBER번째의 피보나치 수열을 구함
Console.WriteLine(answer); // 55 출력
Console.ReadLine();
}
static public int Fibonacci(int value)
{
if (value <= 2)
{
return 1;
}
return Fibonacci(value - 1) + Fibonacci(value - 2);
}
// 사실 피보나치수열은 재귀호출로 구현하게 되면 굉장히 비효율적인데,
// 다이나믹 프로그래밍 기법을 사용하여 효율성을 늘릴 수 있다.
}