using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace ForProgCS
{
class Program
{
static int fib_rec(int n)
{
if (n == 0) return 0;
if (n > 0 && n < 3) return 1;
else return fib_rec(n - 1) + fib_rec(n - 2);
}
static int fib_iter(int n)
{
int a = 0;
int b = 1;
for (int i = 0; i < n; i++)
{
b += a;
a = b - a;
}
return a;
}
static void Main(string[] args)
{
var stoper = new Stopwatch();
Console.WriteLine("Recursive start: {0}", stoper.ElapsedMilliseconds);
stoper.Start();
Console.WriteLine("Result: {0}", fib_rec(40));
stoper.Stop();
Console.WriteLine("Recursive stop: {0}", stoper.ElapsedMilliseconds);
stoper.Reset();
Console.WriteLine("\nIternation start: {0}", stoper.ElapsedMilliseconds);
stoper.Start();
Console.WriteLine("Result: {0}", fib_iter(40));
stoper.Stop();
Console.WriteLine("Iteration stop: {0}", stoper.ElapsedMilliseconds);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0Owp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7CgpuYW1lc3BhY2UgRm9yUHJvZ0NTCnsKICAgIGNsYXNzIFByb2dyYW0KICAgIHsKICAgICAgICBzdGF0aWMgaW50IGZpYl9yZWMoaW50IG4pCiAgICAgICAgewogICAgICAgICAgICBpZiAobiA9PSAwKSByZXR1cm4gMDsKICAgICAgICAgICAgaWYgKG4gPiAwICYmIG4gPCAzKSByZXR1cm4gMTsKICAgICAgICAgICAgZWxzZSByZXR1cm4gZmliX3JlYyhuIC0gMSkgKyBmaWJfcmVjKG4gLSAyKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBpbnQgZmliX2l0ZXIoaW50IG4pCiAgICAgICAgewogICAgICAgICAgICBpbnQgYSA9IDA7CiAgICAgICAgICAgIGludCBiID0gMTsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGIgKz0gYTsKICAgICAgICAgICAgICAgIGEgPSBiIC0gYTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBzdG9wZXIgPSBuZXcgU3RvcHdhdGNoKCk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJSZWN1cnNpdmUgc3RhcnQ6IHswfSIsIHN0b3Blci5FbGFwc2VkTWlsbGlzZWNvbmRzKTsKICAgICAgICAgICAgc3RvcGVyLlN0YXJ0KCk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJSZXN1bHQ6IHswfSIsIGZpYl9yZWMoNDApKTsKICAgICAgICAgICAgc3RvcGVyLlN0b3AoKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlJlY3Vyc2l2ZSBzdG9wOiB7MH0iLCBzdG9wZXIuRWxhcHNlZE1pbGxpc2Vjb25kcyk7CgogICAgICAgICAgICBzdG9wZXIuUmVzZXQoKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlxuSXRlcm5hdGlvbiBzdGFydDogezB9Iiwgc3RvcGVyLkVsYXBzZWRNaWxsaXNlY29uZHMpOwogICAgICAgICAgICBzdG9wZXIuU3RhcnQoKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlJlc3VsdDogezB9IiwgZmliX2l0ZXIoNDApKTsKICAgICAgICAgICAgc3RvcGVyLlN0b3AoKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkl0ZXJhdGlvbiBzdG9wOiB7MH0iLCBzdG9wZXIuRWxhcHNlZE1pbGxpc2Vjb25kcyk7CiAgICAgICAgfQogICAgfQp9Cg==