Skip to content

Commit 59b79d6

Browse files
committed
✨feat(recursivos): Implementa exemplos de algoritmos recursivos | Parte 02
- Implementa algoritmo recursivo e iterativo para calculo da potência de 2 - Implementa algoritmo recursivo e iterativo para calculo da sequência de Fibonacci - Implementa testes manuais de performance entre os algoritmos recursivos e iterativos - Configuração de Depuração do VSCode
1 parent f0b91da commit 59b79d6

File tree

3 files changed

+109
-0
lines changed

3 files changed

+109
-0
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"java.debug.settings.onBuildFailureProceed": true
3+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package algoritmos.recursivos;
2+
3+
public class Fibonacci {
4+
5+
public static int fibonacciRecursivo(int n){
6+
if ((n == 0) || (n == 1)){
7+
return n;
8+
}
9+
else {
10+
return fibonacciRecursivo(n - 1) + fibonacciRecursivo(n - 2);
11+
}
12+
}
13+
14+
public static int fibonacciIterativo(int n) {
15+
int i, fibonacci = 0;
16+
int fibAnterior = 0;
17+
int fibPosterior = 1;
18+
if ((n == 0) || (n == 1)){
19+
return n;
20+
}
21+
else {
22+
for (i = 2; i <= n; i++){
23+
fibonacci = fibAnterior + fibPosterior;
24+
fibAnterior = fibPosterior;
25+
fibPosterior = fibonacci;
26+
}
27+
return fibonacci;
28+
}
29+
}
30+
31+
32+
public static void main(String[] args) {
33+
int n = 16;
34+
35+
//Medição do tempo para versão recursiva
36+
long inicioRecursivo = System.nanoTime();
37+
int resultadoRecursivo = fibonacciRecursivo(n);
38+
long fimRecursivo = System.nanoTime();
39+
long tempoRecursivo = fimRecursivo - inicioRecursivo;
40+
41+
//Medição do tempo para versão iterativa
42+
long inicioIterativo = System.nanoTime();
43+
int resultadoIterativo = fibonacciIterativo(n);
44+
long fimIterativo = System.nanoTime();
45+
long tempoIterativo = fimIterativo - inicioIterativo;
46+
47+
//Apresentação dos Resultados Medidos
48+
System.out.println("Resultado recursivo: " + resultadoRecursivo);
49+
System.out.println("Tempo recursivo (ns): " + tempoRecursivo);
50+
System.out.println("Resultado iterativo: " + resultadoIterativo);
51+
System.out.println("Tempo iterativo (ns): " + tempoIterativo);
52+
System.out.println("Diferença (ns): " + (tempoRecursivo - tempoIterativo));
53+
}
54+
55+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package algoritmos.recursivos;
2+
3+
public class PotenciaDe2 {
4+
5+
public static int potenciaDe2Recursivo(int n){
6+
if (n == 0) {
7+
return 1;
8+
}
9+
else {
10+
return 2 * potenciaDe2Recursivo(n - 1);
11+
}
12+
}
13+
14+
public static int potenciaDe2Iterativo(int n){
15+
int i, potencia = 1;
16+
if (n == 0) {
17+
return 1;
18+
}
19+
else {
20+
for (i = 1; i <= n; i++) {
21+
potencia = potencia * 2;
22+
}
23+
return potencia;
24+
}
25+
}
26+
27+
public static void main(String[] args) {
28+
int n = 15;
29+
30+
//Medição do tempo para versão recursiva
31+
long inicioRecursivo = System.nanoTime();
32+
int resultadoRecursivo = potenciaDe2Recursivo(n);
33+
long fimRecursivo = System.nanoTime();
34+
long tempoRecursivo = fimRecursivo - inicioRecursivo;
35+
36+
//Medição do tempo para versão iterativa
37+
long inicioIterativo = System.nanoTime();
38+
int resultadoIterativo = potenciaDe2Iterativo(n);
39+
long fimIterativo = System.nanoTime();
40+
long tempoIterativo = fimIterativo - inicioIterativo;
41+
42+
//Apresentação dos Resultados Medidos
43+
System.out.println("Resultado recursivo: " + resultadoRecursivo);
44+
System.out.println("Tempo recursivo (ns): " + tempoRecursivo);
45+
System.out.println("Resultado iterativo: " + resultadoIterativo);
46+
System.out.println("Tempo iterativo (ns): " + tempoIterativo);
47+
System.out.println("Diferença (ns): " + (tempoRecursivo - tempoIterativo));
48+
49+
}
50+
51+
}

0 commit comments

Comments
 (0)