Rešitev: program Rekurzivno zaporedje drugega reda (Java)

Iz MaFiRaWiki

Naloga: program Rekurzivno zaporedje drugega reda

Komentar

Rešitev vsebuje dve metodi, ki računata isto stvar. Metoda z zanko for je precej efektivnejša, saj vsak člen zaporedja izračuna natanko enkrat. Metoda z rekurzijo pa je precej manj učinkovita, saj je vsak člen računan večkrat (to število narašča premosorazmerno z iskanim členom).

  1. public class Zaporedje{
  2. public static void main(String[] args) {
  3. double test = a(1.0, 1.0, 1.0, 1.0, 40);
  4. System.out.println(test);
  5. double test2 = a2(1.0, 1.0, 1.0, 1.0, 40);
  6. System.out.println(test2);
  7. }
  8. //Rekurzivna metoda, ki klice sama sebe
  9. public static double a(double x0, double x1, double u, double v, int n){
  10. if (n == 0) return x0;
  11. if (n == 1) return x1;
  12. return u*a(x0, x1, u, v, n-1) + v*a(x0,x1,u,v,n-2);
  13. }
  14. //Obicajna metoda ki izvede racun s pomocjo zanke
  15. public static double a2(double x0, double x1, double u, double v, int n){
  16. double[] x = new double[n+1];
  17. if (n == 0 ) {
  18. return x0;
  19. }
  20. if (n == 1 ) {
  21. return x1;
  22. }
  23. x[0] = x0;
  24. x[1] = x1;
  25. for (int i=2; i <= n; i++){
  26. x[i]=u*x[i-1] + v*x[i-2];
  27. }
  28. return x[n];
  29. }
  30. }
Osebna orodja