Aspecte teoretice:
Șirul lui Fibonacci este un șir de numere întregi a1, a2, a3, … definit în felul următor:
a1 = 1, a2 = 1, an = an-1 + an-2, pentru orice n≥3. O astfel de definiție, în care un anumit termen se construiește din termeni anterior determinați, se numește definiție recurentă (recursivă).
Pentru a determina al n-lea termen al șirului lui Fibonacci, va trebui să determinăm toți
termenii până la al n-1-lea inclusiv.
Implementare:
#include "stdafx.h" #include<iostream> using namespace std; int main() { int a0 = 0, a1 = 1, a2, i, n; cout << "Numarul de elemente: "; cin >> n; cout << "Sirul: " << a0 << " " << a1 << " "; for (i = 0; i<n - 2; i++) { a2 = a1 + a0; cout << a2 << " "; a0 = a1; a1 = a2; } system("Pause"); }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FibonacciCS { class Program { static void Main(string[] args) { int a0 = 0; int a1 = 1; int a2, i, n; Console.WriteLine("Numarul de elemente: "); n = Convert.ToInt32(Console.ReadLine()); Console.Write("Sirul: " + a0 + " " + a1 + " "); for (i=0; i<n-2; i++) { a2 = a1 + a0; Console.Write(a2 + " "); a0 = a1; a1 = a2; } Console.ReadKey(); } } }
Module Module1 Sub Main() Dim a0 As Integer = 0 Dim a1 As Integer = 1 Dim a2 As Integer Dim i, n As Integer Console.WriteLine("Numarul de elemente: ") n = Convert.ToInt32(Console.ReadLine()) Console.Write("Sirul: " & a0 & " " & a1 & " ") For i = 0 To n - 2 a2 = a1 + a0 Console.Write(a2 & " ") a0 = a1 a1 = a2 Next Console.ReadKey() End Sub End Module
public static void main(String[] args) {for (int i=0; i<=46; i++) System.out.print(fib(i)+“, “); } } |
–Elementele sirului lui Fibonacci
fib :: Int -> Int
fib n
| n==O = 0
| n==l = 1
| n>l = fib (n-2) + fib (n-1)
–observăm ca evaluarea functiei fib n creste rapid odata cu cresterea lui n
–se consuma multe resurse din partea masinii de calcul
(defun fibonacci (N)
“Compute the N’th Fibonacci number.”
(if (or (zerop N) (= N 1))
1
(+ (fibonacci (- N 1)) (fibonacci (- N 2)))))
Rezultat: