Отредактировать код, вычисляющий числа Фибоначчи - C#
Формулировка задачи:
Прошу ногами на пинать и тапками не кидать, в программировании очень слаб. Есть код:
Проблема в том, что в Math числа фибоначчи каждый раз считаются заново. Подскажите как исправить плиз.
namespace cs_4_1
{
static class Math_
{
public static int Fibonachi(int n)
{
int a = 0;
int b = 1;
for (int i = 0; i < n; i++)
{
int temp = a;
a = b;
b = temp + a;
}
return a;
}
};
class MyClass : IEnumerable
{
int n;
public MyClass(int m)
{
n = m;
}
IEnumerator IEnumerable.GetEnumerator()
{
return new MyClassEnum(n);
}
}
class MyClassEnum : IEnumerator
{
int n;
int idx = 0;
int current = 0;
public MyClassEnum(int m)
{
n = m;
}
public bool MoveNext()
{
if (idx == n)
return false;
idx++;
current = Math_.Fibonachi(idx);
return true;
}
public void Reset()
{
idx = 0;
}
public object Current
{
get
{
return current;
}
}
}
class MyClass0
{
int n;
public MyClass0(int m)
{
n = m;
}
public IEnumerator GetEnumerator()
{
int a = 0;
int b = 1;
for (int i = 0; i < n; i++)
{
int temp = a;
a = b;
b = temp + b;
yield return a;
}
}
}
class Program
{
static void Main(string[] args)
{
MyClass mc = new MyClass(10);
foreach (var x in mc)
Console.Write(x + " ");
Console.WriteLine();
MyClass0 mc0 = new MyClass0(10);
foreach (var x in mc0)
Console.Write(x + " ");
Console.Read();
}
}
}Решение задачи: «Отредактировать код, вычисляющий числа Фибоначчи»
textual
Листинг программы
var a = Fibonachi(10); var b = Fibonachi(20);