Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 20:14

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Tupel Rekursiv

Discussion on Tupel Rekursiv within the Java forum part of the Coders Den category.

Reply
 
Old   #1
 
The_Dentist's Avatar
 
elite*gold: 13
Join Date: Nov 2014
Posts: 71
Received Thanks: 4
Tupel Rekursiv

Hallo,

Ich hätte mal eine Frage zur rekursiven Erstellung von Tupel(n) aus einem Array.

Ich tue mir extrem schwer bei rekursiven Methoden, weswegen es nett wäre wenn Ihr mir da helfen könntet.

Also gegeben sei ein Array a mit z.B. 127, 3, 7
Ich will jetzt alle Tupel:
127, 127, 127,
127, 127, 3
.
.
.
7, 7, 7 // 27 Möglichkeiten

Mit for schleifen ist sowas ja einfach gelöst, aber wie mache ich das rekursiv? Kann ich das Ganze ähnlich der For-Schleifen lösen und einfach Indizes übergeben und als Abbruchbedingung festlegen, wenn alle Indizes bei 2 angekommen sind?

€dit: Ich habe mich mal an einem Zweier Tupel Rekursiv versucht, dass ist aber mehr durch ausprobieren entstanden, als Verstand. Allerdings gibt der bis jetzt auch nur 3 von 4 Lösungen aus.

The_Dentist is offline  
Old 07/23/2015, 16:07   #2
 
elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 444
Meine Idee: Gib der Funktion die Parameter Länge, Elemente und ein Array zum Speichern.
Wenn Länge noch größer ist als 1, erzeuge rekursiv alle Tupel mit eins weniger als Länge. Anschließend dupliziere die erzeugten Tupel um die Anzahl der möglichen Elemente. Füge dann an die ersten Länge^(Anzahl der Elemente) ans Ende immer Länge^((Anzahl der Element)-1) mal ein Element an.

Bei den Elementen 1, 2, 3 und der Länge 3 könnte die Funktion also so vorgehen (-- geben die Rekursionstiefe an):
* Länge ist über 1 -> Rufe erstelleTupel(2, Elemente, Array) auf
--* Länge ist über 1 -> Rufe erstelleTupel(1, Elemente, Array) auf
----* Liefere (1, 0, 0), (2, 0, 0), (3, 0, 0)
--* Dupliziere: (1, 0, 0), (2, 0, 0), (3, 0, 0), (1, 0, 0), (2, 0, 0), (3, 0, 0), (1, 0, 0), (2, 0, 0), (3, 0, 0)
--* Elemente anfügen: (1, 1, 0), (2, 1, 0), (3, 1, 0), (1, 2, 0), (2, 2, 0), (3, 2, 0), (1, 3, 0), (2, 3, 0), (3, 3, 0)
* Dupliziere: (1, 1, 0), (2, 1, 0), (3, 1, 0), (1, 2, 0), (2, 2, 0), (3, 2, 0), (1, 3, 0), (2, 3, 0), (3, 3, 0), (1, 1, 0), (2, 1, 0), (3, 1, 0), (1, 2, 0), (2, 2, 0), (3, 2, 0), (1, 3, 0), (2, 3, 0), (3, 3, 0), (1, 1, 0), (2, 1, 0), (3, 1, 0), (1, 2, 0), (2, 2, 0), (3, 2, 0), (1, 3, 0), (2, 3, 0), (3, 3, 0)
* Elemente anfügen: (1, 1, 1), (2, 1, 1), (3, 1, 1), (1, 2, 1), (2, 2, 1), (3, 2, 1), (1, 3, 1), (2, 3, 1), (3, 3, 1), (1, 1, 2), (2, 1, 2), (3, 1, 2), (1, 2, 2), (2, 2, 2), (3, 2, 2), (1, 3, 2), (2, 3, 2), (3, 3, 2), (1, 1, 3), (2, 1, 3), (3, 1, 3), (1, 2, 3), (2, 2, 3), (3, 2, 3), (1, 3, 3), (2, 3, 3), (3, 3, 3)
algernong is offline  
Reply


Similar Threads Similar Threads
Rekursiv --> Iterativ
12/02/2014 - General Coding - 4 Replies
Hey, gibt es sowas wie ne Faustregel zum umcoden einer rekursiven methode zu einer iterativen? Oder ist es von Algorithmus zu Algorithmus anders? Danke für die antworten lg money



All times are GMT +2. The time now is 20:15.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.