import java.util.Scanner;
/**
* Java program to calculate and print Fibonacci number using both recursion and Iteration.
* Fibonacci number is sum of previous two Fibonacci numbers fn= fn-1+ fn-2
* first 10 Fibonacci numbers are 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
* @author
*/
class FibonacciCalculator {
public static void main
(String args
[]) {
//input to print Fibonacci series upto how many numbers
System.
out.
println("Enter number upto which Fibonacci series to print: "); int number
= new Scanner
(System.
in).
nextInt();
System.
out.
println("Fibonacci series upto " + number
+" numbers : "); //printing Fibonacci series upto number
for(int i=1; i<=number; i++){
System.
out.
print(fibonacci2
(i
) +" "); }
}
/*
* Java program for Fibonacci number using recursion.
* This program uses tail recursion to calculate Fibonacci number for a given number
* @return Fibonacci number
*/
public static int fibonacci(int number){
if(number == 1 || number == 2){
return 1;
}
return fibonacci(number-1) + fibonacci(number -2); //tail recursion
}
/*
* Java program to calculate Fibonacci number using loop or Iteration.
* @return Fibonacci number
*/
public static int fibonacci2(int number){
if(number == 1 || number == 2){
return 1;
}
int fibo1=1, fibo2=1, fibonacci=1;
for(int i= 3; i<= number; i++){
fibonacci = fibo1 + fibo2; //Fibonacci number is sum of previous two Fibonacci number
fibo1 = fibo2;
fibo2 = fibonacci;
}
return fibonacci; //Fibonacci number
}
}
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKLyoqCiAqIEphdmEgcHJvZ3JhbSB0byBjYWxjdWxhdGUgYW5kIHByaW50IEZpYm9uYWNjaSBudW1iZXIgdXNpbmcgYm90aCByZWN1cnNpb24gYW5kIEl0ZXJhdGlvbi4KICogRmlib25hY2NpIG51bWJlciBpcyBzdW0gb2YgcHJldmlvdXMgdHdvIEZpYm9uYWNjaSBudW1iZXJzIGZuPSBmbi0xKyBmbi0yCiAqIGZpcnN0IDEwIEZpYm9uYWNjaSBudW1iZXJzIGFyZSAxLCAxLCAyLCAzLCA1LCA4LCAxMywgMjEsIDM0LCA1NQogKiBAYXV0aG9yCiAqLwpjbGFzcyBGaWJvbmFjY2lDYWxjdWxhdG9yIHsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CiAgIAogICAgICAgLy9pbnB1dCB0byBwcmludCBGaWJvbmFjY2kgc2VyaWVzIHVwdG8gaG93IG1hbnkgbnVtYmVycwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRW50ZXIgbnVtYmVyIHVwdG8gd2hpY2ggRmlib25hY2NpIHNlcmllcyB0byBwcmludDogIik7CiAgICAgICAgaW50IG51bWJlciA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbikubmV4dEludCgpOwogICAgIAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRmlib25hY2NpIHNlcmllcyB1cHRvICIgKyBudW1iZXIgKyIgbnVtYmVycyA6ICIpOwogICAgICAgIC8vcHJpbnRpbmcgRmlib25hY2NpIHNlcmllcyB1cHRvIG51bWJlcgogICAgICAgIGZvcihpbnQgaT0xOyBpPD1udW1iZXI7IGkrKyl7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoZmlib25hY2NpMihpKSArIiAiKTsKICAgICAgICB9CiAKICAgCiAgICB9CiAKICAgIC8qCiAgICAgKiBKYXZhIHByb2dyYW0gZm9yIEZpYm9uYWNjaSBudW1iZXIgdXNpbmcgcmVjdXJzaW9uLgogICAgICogVGhpcyBwcm9ncmFtIHVzZXMgdGFpbCByZWN1cnNpb24gdG8gY2FsY3VsYXRlIEZpYm9uYWNjaSBudW1iZXIgZm9yIGEgZ2l2ZW4gbnVtYmVyCiAgICAgKiBAcmV0dXJuIEZpYm9uYWNjaSBudW1iZXIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBpbnQgZmlib25hY2NpKGludCBudW1iZXIpewogICAgICAgIGlmKG51bWJlciA9PSAxIHx8IG51bWJlciA9PSAyKXsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgIAogICAgICAgIHJldHVybiBmaWJvbmFjY2kobnVtYmVyLTEpICsgZmlib25hY2NpKG51bWJlciAtMik7IC8vdGFpbCByZWN1cnNpb24KICAgIH0KIAogICAgLyoKICAgICAqIEphdmEgcHJvZ3JhbSB0byBjYWxjdWxhdGUgRmlib25hY2NpIG51bWJlciB1c2luZyBsb29wIG9yIEl0ZXJhdGlvbi4KICAgICAqIEByZXR1cm4gRmlib25hY2NpIG51bWJlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGludCBmaWJvbmFjY2kyKGludCBudW1iZXIpewogICAgICAgIGlmKG51bWJlciA9PSAxIHx8IG51bWJlciA9PSAyKXsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIGludCBmaWJvMT0xLCBmaWJvMj0xLCBmaWJvbmFjY2k9MTsKICAgICAgICBmb3IoaW50IGk9IDM7IGk8PSBudW1iZXI7IGkrKyl7CiAgICAgICAgICAgIGZpYm9uYWNjaSA9IGZpYm8xICsgZmlibzI7IC8vRmlib25hY2NpIG51bWJlciBpcyBzdW0gb2YgcHJldmlvdXMgdHdvIEZpYm9uYWNjaSBudW1iZXIKICAgICAgICAgICAgZmlibzEgPSBmaWJvMjsKICAgICAgICAgICAgZmlibzIgPSBmaWJvbmFjY2k7CiAgICAgICAgIAogICAgICAgIH0KICAgICAgICByZXR1cm4gZmlib25hY2NpOyAvL0ZpYm9uYWNjaSBudW1iZXIKICAgICAKICAgIH0gIAogCn0=