// wykorzystujemy klasę Scanner z pakietu java.util import java.util.*; /** * N-ty element ciągu Fibonacciego rekurencyjnie i iteracyjnie * @author kodatnik.blogspot.com */ public class CiagFibonacciego { // metoda zwraca n-ty element ciągu Fibonacciego // wersja rekurencyjna public static int fibR(int n) { if (n < 2) return n; // jeśli n<2 zwracamy n (dla zera 0 dla jedynki 1) return fibR(n-1) + fibR(n-2); // jeśli nie to zwracamy sumę elementu poprzedniego i jeszcze wcześniejszego } // metoda zwraca n-ty element ciągu Fibonacciego // wersja iteracyjna public static int fibI(int n) { int elementA = 0; // zmienne pomocnicze symbolizujące int elementB = 1; // element poprzedni B i jeszcze wcześniejszy A int wynik = 0; // zmienna wynik, pod którą podstawimy obliczoną wartość if (n < 2) return n; // jeśli n<2 zwracamy n (dla zera 0 dla jedynki 1) // jeśli nie to liczymy n=ty element ciagu for(int i = 2; i <= n; i++){ wynik = elementA + elementB; // pod wynik podstawiamy sumę poprzednich elementów elementA = elementB; // modyfikujemy zmienne przechowujące elementB = wynik; // dwie ostatnie wartości } return wynik; // zwracamy wynik } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print ("Który element ciągu Fibonacciego chcesz obliczyć: " ); // pobieramy od użytkownika liczbę int n = sc.nextInt(); // wyświetlamy na ekranie obliczony element System.out.println( n + "-ty element ciągu Fibonacciego (rekurencja) wynosi: " + fibR(n)); System.out.println( n + "-ty element ciągu Fibonacciego (iteracja) wynosi: " + fibI(n)); } }Uruchomiona aplikacja:
Który element ciągu Fibonacciego chcesz obliczyć: 10 10-ty element ciągu Fibonacciego (rekurencja) wynosi: 55 10-ty element ciągu Fibonacciego (iteracja) wynosi: 55
Rozwiązanie rekurencyjne jest bardzo kosztowne. Sprawdź czas wykonania jednej i drugiej metody dla dużych n, bądź też liczbę rekurencyjnych wywołań potrzebnych do takich obliczeń.
3 Komentarze - Ciąg Fibonacciego rekurencyjnie i iteracyjnie
Dobry kod
Spoko ale przez komentarze w kodzie notabene czyta się źle
powiedzmy ze sie da
Prześlij komentarz
Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)