Mam taki problem. Jestem początkującym w dziedzinie programowania. Otóż chciałem stworzyć program, który będzie liczył podany element ciągu. Warunki początkowe są takie:
Język to Java
a0=1;
a1=3;
ak = (ak-1)/(ak+1) dla parzystych
ak = (ak-1)*(ak+1) dla nieparzystych.
Stworzyłem kod, ale wyrzuca błąd w metodzie iteracyjnej:
Exception in thread "main" java.lang.StackOverflowError
Proszę o pomoc i poprawienie błędów z góry dziękuję!!
Mój kod:
import java.util.*;
public class Ciag {
public static int rek(int n) {
switch (n) {
case 0:
return 1;
case 1:
return 3;
default:
if (n % 2 == 0) {
return rek(n + 1) / rek(n - 1);
} else {
return rek(n + 1) * rek(n - 1);
}
}
}
public static int iter(int n) {
int a0 = 1;
int a1 = 3;
int wynik = 0;
for (int i = 3; i <= n; i++) {
if (n % 2 == 0) {
wynik = a1 / a0;
a0 = a1;
a1 = wynik;
} else {
wynik = a1 * a0;
a0 = a1;
a1 = wynik;
}
}
return wynik;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Który element ciągu chcesz obliczyć: ");
int n = sc.nextInt();
System.out.println(n
+ "-ty element (rekurencja) wynosi: "
+ rek(n));
System.out.println(n
+ "-ty element (iteracja) wynosi: "
+ iter(n));
}
}