mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-24 04:54:21 +08:00
@ -91,21 +91,22 @@ public class Fibonacci {
|
||||
res = next;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* We have only defined the nth Fibonacci number in terms of the two before it. Now, we will look at Binet's formula to calculate the nth Fibonacci number in constant time.
|
||||
* The Fibonacci terms maintain a ratio called golden ratio denoted by Φ, the Greek character pronounced ‘phi'.
|
||||
* First, let's look at how the golden ratio is calculated: Φ = ( 1 + √5 )/2 = 1.6180339887...
|
||||
* Now, let's look at Binet's formula: Sn = Φⁿ–(– Φ⁻ⁿ)/√5
|
||||
* We first calculate the squareRootof5 and phi and store them in variables. Later, we apply Binet's formula to get the required term.
|
||||
* Time Complexity will be O(1)
|
||||
*/
|
||||
|
||||
* We have only defined the nth Fibonacci number in terms of the two before it. Now, we will
|
||||
* look at Binet's formula to calculate the nth Fibonacci number in constant time. The Fibonacci
|
||||
* terms maintain a ratio called golden ratio denoted by Φ, the Greek character pronounced
|
||||
* ‘phi'. First, let's look at how the golden ratio is calculated: Φ = ( 1 + √5 )/2
|
||||
* = 1.6180339887... Now, let's look at Binet's formula: Sn = Φⁿ–(– Φ⁻ⁿ)/√5 We first calculate
|
||||
* the squareRootof5 and phi and store them in variables. Later, we apply Binet's formula to get
|
||||
* the required term. Time Complexity will be O(1)
|
||||
*/
|
||||
|
||||
public static int fibBinet(int n) {
|
||||
double squareRootOf5 = Math.sqrt(5);
|
||||
double phi = (1 + squareRootOf5)/2;
|
||||
int nthTerm = (int) ((Math.pow(phi, n) - Math.pow(-phi, -n))/squareRootOf5);
|
||||
double phi = (1 + squareRootOf5) / 2;
|
||||
int nthTerm = (int) ((Math.pow(phi, n) - Math.pow(-phi, -n)) / squareRootOf5);
|
||||
return nthTerm;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user