Untitled
unknown
csharp
5 years ago
1.6 kB
18
Indexable
/// <summary>
/// N adet fibonacci sayısını bir dizi olarak döner.
/// </summary>
static int[] Fibonacci(int n)
{
var fibSequence = new int[n];
var prev = 0;
var curr = 1;
for(var i = 1; i < n; i++)
{
fibSequence[i] = curr;
curr = curr + prev;
prev = curr - prev;
}
return fibSequence;
}
/// <summary>
/// N index'li fibonacci sayısını dinamik programlama kullanarak döner.
/// </summary>
static int FibonacciNth(int n)
{
if (n == 0) return 0;
if (n == 1) return 1;
var curr = 1;
var prev = 0;
var counter = n - 1;
while(counter > 0)
{
curr = curr + prev;
prev = curr - prev;
counter--;
}
return curr;
}
/// <summary>
/// N index'li fibonacci sayısını Binet formülünü kullanarak döner.
/// https://en.wikipedia.org/wiki/Fibonacci_number#Closed-form_expression
/// 1 ile 75 arasındaki n sayıları için geçerlidir.
/// </summary>
static int FibonacciNthClosedForm(int n)
{
var rootOfFive = Math.Sqrt(5);
var phi = (1 + rootOfFive) / 2; // (≈ 1.61803)
return (int)Math.Floor(Math.Pow(phi, n) / rootOfFive + 0.5);
}Editor is loading...