001    package de.hska.info1.uebung.rekursion;
002    
003    public class FibonacciZahlen {
004    
005            public long getFibonacciZahl1(int n) {
006                    if (n <= 1) {
007                            return 1;
008                    } else {
009                            return getFibonacciZahl1(n-1)
010                                            + getFibonacciZahl1(n-2);
011                    }
012            }
013    
014            public long getFibonacciZahl2(int n) {
015                    long [] fib = new long[n + 2];
016                    
017                    fib[0] = 1;
018                    fib[1] = 1;
019                    
020                    for (int i = 2; i <= n; i++) {
021                     fib[i] = fib[i - 1] + fib[i - 2];
022                    }
023                    
024                    return fib[n];
025            }
026            
027            public long getFibonacciZahl(int n) {
028                    long fibi = 1;
029                    long fibiM1 = 1;
030                    long fibiM2 = 1;
031                    
032                    for (int i = 2; i <= n; i++) {
033                     fibi = fibiM1 + fibiM2;
034                     fibiM2 = fibiM1;
035                     fibiM1 = fibi;
036                    }
037                    
038                    return fibi;
039            }
040            
041            /**
042             * @param args
043             */
044            public static void main(String[] args) {
045                    FibonacciZahlen fibonacciZahlen = new FibonacciZahlen();
046                    
047                    for (int n = 0; n < 1000; n++) {
048                            System.out.println("fib(" + n + ") = "
049                                            + fibonacciZahlen.getFibonacciZahl(n));
050                    }
051            }
052    
053    }