using System;
namespace Class_Recursive
{
class CRecursive
{
public decimal RecursiveFib(decimal num) {
if (num <= 2) {
return 1;
}
else {
return RecursiveFib(num - 1) + RecursiveFib(num - 2);
}
}
public int RecursiveFact(int n) {
if (n == 0) {
return 1;
}
return n * RecursiveFact(n - 1);
}
public int RecursiveCountDigits(int n) {
if (n == 0) {
return 0;
}
return (1 + RecursiveCountDigits(n / 10));
}
public decimal IterationFib(decimal num) {
int num1 = 0;
int num2 = 1;
if (num <= 2) {
return 1;
}
for (int i = 1; i < num; i++) {
int tmp = num1;
num1 = num2;
num2 = tmp+num2;
}
return num2;
}
}
class Class1
{
static void Main(string[] args)
{
CRecursive cr = new CRecursive();
Console.WriteLine("RecursiveFact 5: " + cr.RecursiveFact(5));
Console.WriteLine("RecursiveCountDigits 123456: " + cr.RecursiveCountDigits(123456));
Console.WriteLine("RecursiveFib 20: " + cr.RecursiveFib(20));
Console.WriteLine("IterationFib 20: " + cr.IterationFib(20));
}
}
}
/*
run:
RecursiveFact 5: 120
RecursiveCountDigits 123456: 6
RecursiveFib 20: 6765
IterationFib 20: 6765
*/