malczenzo
malczenzo
#naukaprogramowania #java

public void mystery1(int n) {
if (n <= 1) {
System.out.print(n);
} else {
mystery1(n / 2);
System.out.print(", " + n);
}
}

Jaki powinien być wynik dla mystery(4)?
4
  • Najlepsze
  • Wszystkie komentarze
wytrzzeszcz
@malczenzo 1,2,4
4
Cyganowski
@malczenzo: , 4, 2, 1 ?
1
malczenzo
malczenzo
@Cyganowski: bedzie kolejnosc 1, 2, 4
1
63274682374
63274682374
@malczenzo: Czepiam się, ale powinno być mystery1(4) ;)
1
Cyganowski
nie no zaczynamy funkcje od 4, wpada program w instrukcje else (wypisuje ", 4") ;
dzieli na 2 i znowu do else (wypisuje ", 2");
dzieli na 2, wchodzi w IF (wypisuje 1);
wynik: ", 4, 21"
1
ElderWrath
@Cyganowski: pierwsze wywołuję sama siebie a potem wypisuje ;)
1
kto3
@Cyganowski: pamiętaj, że używając rekurencji wynik jest odkładany na stosie, a stos ma to do siebie, że ostatnie co do niego wejdzie pierwsze z niego wyjdzie, więc będzie 12,4
1
malczenzo
malczenzo
@wytrzzeszcz: taki będzie ;)
0
malczenzo
malczenzo
jednakże czy nie powinienem uznać, że n=8 w tym wypadku skoro jest mystery(n /2)?
0
Cyganowski
@malczenzo: no ale poda w kolejności 4, 2, 1, tak mi się wydaje ;P
0
rubesom
rubesom
@wytrzzeszcz Jako jedyny podałeś prawidłowe rozwiązanie więc mam pytanie - obliczyłeś w głowie czy na kartce? Ja zawsze do takich metod muszę używać kartki xD
0
malczenzo
malczenzo
@63274682374: co racja, to racja. ( ͡° ͜ʖ ͡°)
0
malczenzo
malczenzo
@Czeggu: czemu nieładne? :<
0
rubesom
rubesom
@malczenzo @Czeggu @kto3 @ElderWrath @malczenzo @wytrzzeszcz

Mam pytanie do osób, które to rozwiązały. Jak myślicie, czy takie zadania pojawiają się na rozmowach rekrutacyjnych? I jaki waszym zdaniem to poziom?
0
Cyganowski
@kto3 @Czeggu @ElderWrath rzeczywiście to przeoczyłem, ale dzięki za poprawkę!
0
malczenzo
malczenzo
@rubesom: ja dopiero się uczę, na razie to jedynei widzę że długa droga przede mną do rozmowy z kimkolwiek...
0
wytrzzeszcz
@rubesom to zadanie jest proste, ale troszkę podchwytliwe
0