About efficient algorithms in java??
About efficient algorithms in java??
An algorithm for solving exercises such as the Fibonacci series???

I'm interesting in learn!!!
Re: About efficient algorithms in java??
Well, Fibonacci can be solved in many ways (with recursion, iteration, precalculation, etc). One of the fastests I know (if not the fastest), is to use the closed solution of the recurrence. That can be implemented in many languages.
- luismawolf
- Posts: 30
- Joined: 6 years ago
- Gender:

Re: About efficient algorithms in java??
package fibonacci;
import java.util.Scanner;
public class Fibonacci {
static int fibonacci(int numero) {
if ((numero == 0) || (numero == 1)) {
return 1;
} else {
return fibonacci(numero - 1) + fibonacci(numero - 2);
}
}
public static void main(String[] args) {
Scanner miScanner = new Scanner(System.in);
System.out.println("Entre un número: ");
int prueba = miScanner.nextInt();
System.out.println(fibonacci(prueba));
}
}
import java.util.Scanner;
public class Fibonacci {
static int fibonacci(int numero) {
if ((numero == 0) || (numero == 1)) {
return 1;
} else {
return fibonacci(numero - 1) + fibonacci(numero - 2);
}
}
public static void main(String[] args) {
Scanner miScanner = new Scanner(System.in);
System.out.println("Entre un número: ");
int prueba = miScanner.nextInt();
System.out.println(fibonacci(prueba));
}
}
Re: About efficient algorithms in java??
La sucesion de Fibonnaci, si se necesitan varios términos de ella, es mejor calcularla de la forma F[n] = F[n-1] + F[n-2], pero cuando se necesita un término en particular, se puede calcular en O(log2 N) utilizando propiedades de las matrices. La matriz:
0 1
1 1
elevada a la N, da como resultado
F[N-2] F[N-1]
F[N-1] F[N]
Esto se puede demostrar por induccion y de ahi se derivan las propiedades siguientes:
1-> F[n]^2 + F[n+1]^2 = F[2n + 1]
2-> F[n+1] *( F[n] + F[n+2] ) = F[2n + 2]
0 1
1 1
elevada a la N, da como resultado
F[N-2] F[N-1]
F[N-1] F[N]
Esto se puede demostrar por induccion y de ahi se derivan las propiedades siguientes:
1-> F[n]^2 + F[n+1]^2 = F[2n + 1]
2-> F[n+1] *( F[n] + F[n+2] ) = F[2n + 2]
