Untitled
unknown
csharp
4 years ago
1.6 kB
14
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...