recursive(형용사): 반복되는
static uint SumRecursive(uint num)
{
if (num == 0)
{
return 0; // 종료조건 (base case)
}
else
{
return num + SumRecursive(num -1);
// 재귀 호출 (recursive function)
}
}
static void Main(string[] args)
{
Console.WriteLine(SumRecursive(3));
}
0 1 1 2 3 5 8 13 21 34 55 ...
using System;
namespace _Fibonacci
{
class Program
{
static void Main(string[] args)
{
Console.Write(Fibonacci(5));
}
static uint Fibonacci(uint number)
{
if (number == 0)
{
return 0;
}
if (number == 1)
{
return 1;
}
return Fibonacci(number - 1) + Fibonacci(number - 2);
}
}
막대 세 개가 있고, 한 막대에 n개의 원판이 있음
막대 세 개가 있고, 한 막대에 n-1개의 원판이 있음
막대 세 개가 있고, 한 막대에 2개의 원판이 있음
막대 세 개가 있고, 한 막대에 1개의 원판이 있음
using System;
namespace _20210327
{
class Program
{
static void Main(string[] args)
{
const ulong FACTORIAL = 10;
Console.Write("NonRecursiveFactorial: ");
Console.WriteLine(NonRecursiveFactorial(FACTORIAL));
Console.Write("RecursiveFactorial: ");
Console.WriteLine(RecursiveFactorial(FACTORIAL));
}
static ulong NonRecursiveFactorial(ulong n)
{
if (n <= 1)
{
return 1;
}
uint factorial = 1;
for (uint i = 2; i <= n; i++)
{
factorial *= i;
}
return factorial;
}
static ulong RecursiveFactorial(ulong n)
{
if (n==0)
{
return 1;
}
return RecursiveFactorial(n - 1) * n;
}
}
}