Para escrever um método equivalente usando iteração, devemos usar explicitamente uma pilha. O fato de que a versão iterativa requer uma pilha para sua solução indica que o problema é difícil o suficiente para que ele possa se beneficiar da recursão. Como regra geral, a recursão é mais adequada para problemas que não podem ser resolvidos com uma quantidade fixa de memória e, conseqüentemente, requerem uma pilha quando resolvidos iterativamente. Dito isso, a recursão e a iteração podem mostrar o mesmo resultado, embora sigam padrões diferentes. Para decidir qual método funciona melhor, é necessário decidir caso a caso e a melhor prática é escolher com base no padrão que o problema segue.
Por exemplo, para encontrar o enésimo número triangular da sequência triangular: 1 3 6 10 15 ... Um programa que usa um algoritmo iterativo para encontrar o enésimo número triangular:
Usando um algoritmo iterativo:
//Triangular.java
import java.util.*;
class Triangular {
public static int iterativeTriangular(int n) {
int sum = 0;
for (int i = 1; i <= n; i ++)
sum += i;
return sum;
}
public static void main(String args[]) {
Scanner stdin = new Scanner(System.in);
System.out.print("Please enter a number: ");
int n = stdin.nextInt();
System.out.println("The " + n + "-th triangular number is: " +
iterativeTriangular(n));
}
}//enter code here
Usando um algoritmo recursivo:
//Triangular.java
import java.util.*;
class Triangular {
public static int recursiveTriangular(int n) {
if (n == 1)
return 1;
return recursiveTriangular(n-1) + n;
}
public static void main(String args[]) {
Scanner stdin = new Scanner(System.in);
System.out.print("Please enter a number: ");
int n = stdin.nextInt();
System.out.println("The " + n + "-th triangular number is: " +
recursiveTriangular(n));
}
}
recursion
vsiteration
?iteration = for loop
Eu acho que.