Fibonacci numbers are a number sequence, where first two numbers are 1 and 1 or 0 and 1. Each subsequent number is the sum of previous two numbers. This task is often asked by interviewers (not only in Java). Let’s solve it in two ways: using a loop and recursion.

```public int getFibonacci(int number) {
if (number == 1 || number == 2) {
return 1;
}

int fibo1 = 1;
int fibo2 = 1;
int fibonacci = 1;

for (int i = 3; i <= number; i++) {
fibonacci = fibo1 + fibo2;
fibo1 = fibo2;
fibo2 = fibonacci;
}

return fibonacci;
}
```

To see a recursive solution of this task, click “read more”.

The recursive solution looks better, isn’t it?

```public int getFebonacciRecursive(int number) {
if (number == 1 || number == 2) {
return 1;
}

return getFebonacciRecursive(number - 1) + getFebonacciRecursive(number - 2);
}
```

The whole program code with a main method to run:

```package com.imsavva.test;

public class Fibonacci {

public static void main(String[] args) {
new Fibonacci().run();
}

public void run() {
System.out.println("Fibonacci series with loop:");
for (int i = 1; i <= 12; i++) {
System.out.print(getFibonacci(i) + " ");
}

System.out.println();

System.out.println("Fibonacci series with recursion:");
for (int i = 1; i <= 12; i++) {
System.out.print(getFebonacciRecursive(i) + " ");
}
}

public int getFibonacci(int number) {
if (number == 1 || number == 2) {
return 1;
}

int fibo1 = 1;
int fibo2 = 1;
int fibonacci = 1;

for (int i = 3; i <= number; i++) {
fibonacci = fibo1 + fibo2;
fibo1 = fibo2;
fibo2 = fibonacci;
}

return fibonacci;
}

public int getFebonacciRecursive(int number) {
if (number == 1 || number == 2) {
return 1;
}

return getFebonacciRecursive(number - 1) + getFebonacciRecursive(number - 2);
}
}
```