Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Algorithmen (http://www.informatikerboard.de/board/board.php?boardid=17)
----- Zahlenfolge nochmal in umgekehrter Reihenfolge (http://www.informatikerboard.de/board/thread.php?threadid=2487)


Geschrieben von RoseHeart am 19.10.2015 um 10:12:

  Zahlenfolge nochmal in umgekehrter Reihenfolge

Hallo,
was muss ich hinzufügen, damit die Ergebnisse nochmal in umgekehrter Reihenfolge ausgegeben werden?

collatz (int n) {
Aus gabe(n);
if (n == 1) {
Ausgabe "Basisfall";
Ausgabe Zeilenumbruch;
}
else {
if (n ist gerade?) then collatz (n / 2);
else collatz (3*n + 1);
}
}

Irgendetwas mit return oder einfach den Code nochmal umgekehrt schreiben?
Vielen Dank im Voraus!



Geschrieben von eulerscheZahl am 19.10.2015 um 13:14:

 

Schreibe die Ausgabe einfach NACH den rekursiven Aufruf, statt davor.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
public class Main {
	public static void main(String[] paramArrayOfString) {
		collatz(23);
	}

	static void collatz(int n) {
		if (n == 1) {
			System.out.println("Basisfall");
		} else {
			if (n % 2 == 0)
				collatz(n / 2);
			else
				collatz(3 * n + 1);
		}
		System.out.println(n);
	}
}

Ausgabe:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
Basisfall
1
2
4
8
16
5
10
20
40
80
160
53
106
35
70
23


Forensoftware: Burning Board, entwickelt von WoltLab GmbH