Witam, posiadam dwa programy do napisania rekurencyjnie:
- Wypisze n liczb naturalnych, z których pierwsze dwie wynoszą odpowiednio 1 i 2, a każda kolejna jest sumą dwóch poprzednich
- Wypisze n liczb naturalnych, z których pierwsze dwie wynoszą odpowiednio 10 i 20, a każda następna jest średnią arytmetyczną dwóch poprzednich.
Napisałem taki programik:
public class C3 {
public static void main(String[] args){
C3(3);
}
public static double C3(int n){
if (n==1) {
System.out.println(10);
return 10;
}
if (n==2) {
C3(n-1);
System.out.println(20);
return 20;
}
if (n>2) {
C3(n-1);
double x=(C3(n-1)+C3(n-2))/2;
System.out.println(x);
return x;
}
else return 0;
}
}
lecz dla liczby 3 wypisuje mi
10
20
10
20
10
15.0
Wie ktoś może co tu jest nie tak?
2 pytanie:
E. Dla zadanej wartości naturalnej n wypisze następującą kwadratową tablicę liczb:
n n n ... n
n-1 n-1 n-1 ... n-1
... ... ... ... ...
2 2 2 2 2
1 1 1 1 1
Napisałem:
public class F2 {
public static int x=8;
public static void main(String[] args){
F2(x);}
public static void F2(int n){
if (n==1) {for(int i=0;i<x;i++) System.out.print(n+" ");}
if (n>1) {{for(int i=0;i<x;i++)
System.out.print(n+" ");}
System.out.println();
F2(n-1);
}
}
}
i mam pytanie, czy da sie jakoś wcisnąć to n w pętle for w funkcji żeby nie trzeba było tworzyć zmiennej x? Chodzi mi o takie cos ale to nie działa bo n sie zmienia
public class F2 {
public static void main(String[] args){
F2(4);}
public static void F2(int n){
if (n==1) {for(int i=0;i<n;i++) System.out.print(n+" ");}
if (n>1) {{for(int i=0;i<n;i++)
System.out.print(n+" ");}
System.out.println();
F2(n-1);
}
}
}
dodanie znaczników <code> i <code class="java">, poprawienie tematu wątku oraz ustawienie tagów - fp