BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Java rekursive Programmierung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen rekursive Programmierung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
[DS]-=Pencil=- [DS]-=Pencil=- ist männlich
Senior Member


images/avatars/avatar-712.jpg

Dabei seit: 20.09.2002
Beiträge: 446
Herkunft: Berlin

Fragezeichen rekursive Programmierung       Zum Anfang der Seite springen

Hy,

weiss jemand wie man eine rekursive Addition in Java schreibt?

Wir müssen bis Freitag zig solcher Programme schreiben und ohne ein rekursives Beispielprogramm schaffe ich das nicht.. traurig
Hope You Help

unglücklich

__________________
[DS]-=Pencil=-
---------------------------
Eleminate the Enemy | Staatsfeind
Destroy Facism
www.rtcw-prison.net - www.darksoldiers.de
----------------------------
17.08.2004 14:41 [DS]-=Pencil=- ist offline E-Mail an [DS]-=Pencil=- senden Homepage von [DS]-=Pencil=- Beiträge von [DS]-=Pencil=- suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

      Zum Anfang der Seite springen

Rekursive Addition? Was verstehst du denn darunter?

Das klassische Beispiel für Rekursion ist eigentlich immer ein Programm, welches Fakultäten ausgibt. 4! (sprich: die Fakultät von 4) ist das Produkt aller Zahlen von 1-4, also 1*2*3*4=24.

Lässt sich ausdrücken in der rekursiven Formel

n! = n * (n-1)!

In C sieht das dann beispielsweise so aus:

code:
1:
2:
3:
4:
5:
int fak(int n)
{
  if (n <= 1) return 1;
  else return n*fak(n-1);
}

Die IF-Abfrage sorgt dafür, dass die Rekursion eben nicht uns unendliche läuft, sondern dass die Rekursion auch irgendwann wieder zurückläuft. Auch zu beachten ist, dass für jeden Rekursionsschritt Speicher bereitgestellt wird. All zu tief darf die Rekursion also oft nicht gehen, da sonst der Speicher überläuft.

Ich denke mal, Google findet zu Rekursion und Algorithmen auch noch eine Menge weiterer Beispiele.

P.S.: Um die Rekursion zu verstehen, muss man zuerst die Rekursion verstehen...

__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von LX: 17.08.2004 16:04.

17.08.2004 14:54 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
[DS]-=Pencil=- [DS]-=Pencil=- ist männlich
Senior Member


images/avatars/avatar-712.jpg

Dabei seit: 20.09.2002
Beiträge: 446
Herkunft: Berlin

Themenstarter Thema begonnen von [DS]-=Pencil=-
      Zum Anfang der Seite springen

Die Fakultät meine ich nicht.

Sonder direkt eben rekursive Addition..

2+3 rekursiv gerechnet Augenzwinkern

Hope You Help

smile

__________________
[DS]-=Pencil=-
---------------------------
Eleminate the Enemy | Staatsfeind
Destroy Facism
www.rtcw-prison.net - www.darksoldiers.de
----------------------------
17.08.2004 14:58 [DS]-=Pencil=- ist offline E-Mail an [DS]-=Pencil=- senden Homepage von [DS]-=Pencil=- Beiträge von [DS]-=Pencil=- suchen
duke duke ist männlich
Junior Member


images/avatars/avatar-1555.jpg

Dabei seit: 10.02.2004
Beiträge: 104
Herkunft: java.io.*;

      Zum Anfang der Seite springen

sowas?

public int addition(int a,int b){
int erg;
erg = a + b;
return erg;
}

Ich glaube damit ist einfach eine Methode gemeint, wo man 2 Werte übergibt...quelle

__________________
Linux is like a wigwam
no windows no gates and an apache inside !!!

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von duke: 17.08.2004 15:21.

17.08.2004 15:17 duke ist offline E-Mail an duke senden Beiträge von duke suchen
zoul3 zoul3 ist männlich
Member


images/avatars/avatar-249.gif

Dabei seit: 07.02.2003
Beiträge: 268
Herkunft: Berlin

      Zum Anfang der Seite springen

duke???
das ist doch ne einfache addition,oder?
aber cool....durch die frage hab ich schon wieder ne menge gelernt,nur was pencil wissen will versteh ich immer noch nicht............
im übrigen gibt google da echt alles her großes Grinsen

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von zoul3: 17.08.2004 15:49.

17.08.2004 15:34 zoul3 ist offline E-Mail an zoul3 senden Beiträge von zoul3 suchen
duke duke ist männlich
Junior Member


images/avatars/avatar-1555.jpg

Dabei seit: 10.02.2004
Beiträge: 104
Herkunft: java.io.*;

      Zum Anfang der Seite springen

upps, ich war leicht durcheinander,
Hier kann man es aber nachlesen.

__________________
Linux is like a wigwam
no windows no gates and an apache inside !!!

17.08.2004 16:00 duke ist offline E-Mail an duke senden Beiträge von duke suchen
[DS]-=Pencil=- [DS]-=Pencil=- ist männlich
Senior Member


images/avatars/avatar-712.jpg

Dabei seit: 20.09.2002
Beiträge: 446
Herkunft: Berlin

Themenstarter Thema begonnen von [DS]-=Pencil=-
      Zum Anfang der Seite springen

@Duke dein Code ist iterativ smile

Also hier wäre eine Lösung (zumindest erstmal für die Subtraktion) die ich gerade versuche zu basteln, aber er gibt immer nur 6 aus traurig ..

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
class minus
{

public static int minus(int m,int n)
{
  if (n > 0) return m;
  else return minus(m-1,n-1);
}

  public static void main ( String[] args )
  {
    System.out.println(minus(6,2));
  }
}


Hope you Help

unglücklich

__________________
[DS]-=Pencil=-
---------------------------
Eleminate the Enemy | Staatsfeind
Destroy Facism
www.rtcw-prison.net - www.darksoldiers.de
----------------------------
17.08.2004 16:45 [DS]-=Pencil=- ist offline E-Mail an [DS]-=Pencil=- senden Homepage von [DS]-=Pencil=- Beiträge von [DS]-=Pencil=- suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

      Zum Anfang der Seite springen

Kunststück, 2 ist ja auch größer 0, also gibt er den ersten Parameter (6) zurück.

Syntaktisch verstehe ich's, aber was das ganze soll, raffe ich nach wie vor net fröhlich

__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

17.08.2004 17:02 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
[DS]-=Pencil=- [DS]-=Pencil=- ist männlich
Senior Member


images/avatars/avatar-712.jpg

Dabei seit: 20.09.2002
Beiträge: 446
Herkunft: Berlin

Themenstarter Thema begonnen von [DS]-=Pencil=-
      Zum Anfang der Seite springen

Ja, danke (ich Depp), es hat (logischerweise) jetzt funktioniert..

Es soll garnichts..
Es ist einfach nur eine Übungsaufgabe Augenzwinkern ..

Die richtige Lösung lautet wie folgt:

Subtraktion
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
class minus
{

public static int minus(int m,int n)
{
  if (n < 1) return m;
  else return minus(m-1,n-1);
}

  public static void main ( String[] args )
  {
    System.out.println(minus(6,2));
  }
}


Addition
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
class addition
{

public static int plus(int m,int n)
{
  if (n < 1) return m;
  else return plus(m+1,n-1);
}

  public static void main ( String[] args )
  {
    System.out.println(plus(6,2));
  }
}


Hope I Helped

..

__________________
[DS]-=Pencil=-
---------------------------
Eleminate the Enemy | Staatsfeind
Destroy Facism
www.rtcw-prison.net - www.darksoldiers.de
----------------------------
17.08.2004 17:34 [DS]-=Pencil=- ist offline E-Mail an [DS]-=Pencil=- senden Homepage von [DS]-=Pencil=- Beiträge von [DS]-=Pencil=- suchen
[DS]-=Pencil=- [DS]-=Pencil=- ist männlich
Senior Member


images/avatars/avatar-712.jpg

Dabei seit: 20.09.2002
Beiträge: 446
Herkunft: Berlin

Themenstarter Thema begonnen von [DS]-=Pencil=-
      Zum Anfang der Seite springen

Da es hier rein passt, gleich ein weiteres Problem:

Ich habe jetzt versucht das GGT (rekursiv) zu erstellen:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
class ggt
{

public static int plus(int m,int n)
{
  if (n == m) return m;
  else if (m > n) return ggt(m-n,n);
  else (m < n) return ggt(m,n-m);
}

  public static void main ( String[] args )
  {
    System.out.println(ggt(6,2));
  }
}


Dennoch wird ein Fehler beim letzten "else" angesagt (not a statement und ; expected...)

Weiss jemand was das Problem ist?

unglücklich

Hope You Help

traurig

__________________
[DS]-=Pencil=-
---------------------------
Eleminate the Enemy | Staatsfeind
Destroy Facism
www.rtcw-prison.net - www.darksoldiers.de
----------------------------
17.08.2004 19:56 [DS]-=Pencil=- ist offline E-Mail an [DS]-=Pencil=- senden Homepage von [DS]-=Pencil=- Beiträge von [DS]-=Pencil=- suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

      Zum Anfang der Seite springen

code:
1:
2:
3:
if (n == m) return m;
else if (m > n) return ggt(m-n,n);
else (m < n) return ggt(m,n-m);

In der letzten Zeile fehlt ein "if". Allerdings kannst du hier auch einfach die Bedingung weglassen, da der einzig verbliebene Fall ja m<n ist, also nur else return(...).

Außerdem heißt deine Funktion immer noch plus().

__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

17.08.2004 20:04 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
Black Star Black Star ist männlich
Der Pate [Admin]


images/avatars/avatar-2158.jpg

Dabei seit: 11.12.2001
Beiträge: 2.282
Herkunft: /dev/stderr

      Zum Anfang der Seite springen

Es empfiehlt sich auch einfache if-else-...Anweisungen immer zu klammern.
Ist besserer Stil und erspart einem viel Aerger wenn mans uebersieht und nicht weiss, was grad passiert.

__________________
vescere bracis meis

17.08.2004 20:06 Black Star ist offline E-Mail an Black Star senden Homepage von Black Star Beiträge von Black Star suchen
[DS]-=Pencil=- [DS]-=Pencil=- ist männlich
Senior Member


images/avatars/avatar-712.jpg

Dabei seit: 20.09.2002
Beiträge: 446
Herkunft: Berlin

Themenstarter Thema begonnen von [DS]-=Pencil=-
      Zum Anfang der Seite springen

@LX , ich werde es mal verändern smile
@Black Star wie meinst du das

Hier gleich noch ein Problem mit dem Quicksort Algorithmuss:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
class Quicksort
{ static int[] feld;
  static final int maxIndex=99999;

  static void feldFuellen()
  { for (int i=0; i<=maxIndex; i++)
    {  feld[i] = (int)Math.round(Math.random()*900.0 + 100); }
  } // feldFuellen

  static void feldAusgabe()
  { System.out.println("Das Feld enthaelt die folgenden Elemente: ");
    for (int i=0; i<=maxIndex; i++)
    {  System.out.println(feld[i]);
       System.out.println(" ");
    }
    System.out.println();
  } // feldAusgabe

  static void vertausche (int a, int b)
  {  int ablage = feld[a];
     feld[a] = feld[b];
     feld[b] = ablage;
  } // vertausche

static void quicksort(int links, int rechts)
{ int nachlinks = rechts; // Laufindex, der vom rechten Ende nach links laeuft
  int nachrechts = links; // Laufindex, der vom linken Ende nach rechts laeuft
  if (nachrechts < nachlinks)
       { // Pivotelement bestimmen
         int pivot = feld[(nachrechts + nachlinks)/2];

         while (nachrechts <= nachlinks)
         {    // Links erstes Element suchen, das
              // groesser oder gleich dem Pivotelement ist
              while ((nachrechts < rechts) && (feld[nachrechts] < pivot))
                   nachrechts++;

              // Rechts erstes Element suchen, das
              // kleiner oder gleich dem Pivotelement ist
              while ((nachlinks > links) && (feld[nachlinks] > pivot))
                   nachlinks--;

              // Wenn nicht aneinander vorbei gelaufen, Inhalte vertauschen
              if (nachrechts <= nachlinks)
                   { vertausche(nachrechts, nachlinks);
                     nachrechts++;
                     nachlinks--;
                   }
         } // end while

         // Linken Teil sortieren
         if (nachlinks > links) quicksort (links, nachlinks);

         // Rechten Teil sortieren
         if (nachrechts < rechts) quicksort (nachrechts, rechts);

       } // end if
}  // quicksort

  public static void main(String[] arg)
  { feld = new int[maxIndex+1];
    System.out.println("Quicksort-Demo: ");
    feldFuellen();
//    feldAusgabe();
    Stoppuhr t = new Stoppuhr();
    t.starte();
    quicksort(0, maxIndex);
    t.stoppe();
//    feldAusgabe();
    System.out.println("Zeit: " + t.lies() + " ms.");
  } // main
} // class quicksort


Bei Stoppuhr t = new Stoppuhr(); wurde mir ein Fehler angezeigt..

Edit:

Ok das GGT funktioniert jetzt..
Danke für die Hilfe:

Hier der Quellcode

Größter gemeinsamer Teiler:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
class ggt
{

public static int ggt(int m,int n)
{
  if (n == m) return m;
  else if (m > n) return ggt(m-n,n);
  else return ggt(m,n-m);
}

  public static void main ( String[] args )
  {
    System.out.println(ggt(6,2));
  }
}


Hope you Help

traurig

__________________
[DS]-=Pencil=-
---------------------------
Eleminate the Enemy | Staatsfeind
Destroy Facism
www.rtcw-prison.net - www.darksoldiers.de
----------------------------

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von [DS]-=Pencil=-: 17.08.2004 20:17.

17.08.2004 20:16 [DS]-=Pencil=- ist offline E-Mail an [DS]-=Pencil=- senden Homepage von [DS]-=Pencil=- Beiträge von [DS]-=Pencil=- suchen
MyK
Headbanger


Dabei seit: 24.01.2002
Beiträge: 84

      Zum Anfang der Seite springen

Zitat:
Original von [DS]-=Pencil=-
Bei Stoppuhr t = new Stoppuhr(); wurde mir ein Fehler angezeigt..


Ein Compiler oder ein Run Time Fehler? Fehlermeldung?

__________________
Success consists of simply getting up one more time than you fall down.
18.08.2004 19:49 MyK ist offline Beiträge von MyK suchen
[DS]-=Pencil=- [DS]-=Pencil=- ist männlich
Senior Member


images/avatars/avatar-712.jpg

Dabei seit: 20.09.2002
Beiträge: 446
Herkunft: Berlin

Themenstarter Thema begonnen von [DS]-=Pencil=-
      Zum Anfang der Seite springen

Ein Kompilier-Fehler..

Hope You Help

unglücklich

__________________
[DS]-=Pencil=-
---------------------------
Eleminate the Enemy | Staatsfeind
Destroy Facism
www.rtcw-prison.net - www.darksoldiers.de
----------------------------
19.08.2004 20:31 [DS]-=Pencil=- ist offline E-Mail an [DS]-=Pencil=- senden Homepage von [DS]-=Pencil=- Beiträge von [DS]-=Pencil=- suchen
MyK
Headbanger


Dabei seit: 24.01.2002
Beiträge: 84

      Zum Anfang der Seite springen

Hast du vielleicht noch eine Fehlermeldung?

Spontan würde ich darauf tippen, dass die Klasse Stoppuhr nirgends definiert ist - habe allerdings die Java-Syntax nicht im Kopf, könnte auch an der Klammer liegen - aber eine Fehlermeldung wird mich vielleicht eines Besseren belehren.

__________________
Success consists of simply getting up one more time than you fall down.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von MyK: 20.08.2004 00:01.

19.08.2004 23:59 MyK ist offline Beiträge von MyK suchen
[DS]-=Pencil=- [DS]-=Pencil=- ist männlich
Senior Member


images/avatars/avatar-712.jpg

Dabei seit: 20.09.2002
Beiträge: 446
Herkunft: Berlin

Themenstarter Thema begonnen von [DS]-=Pencil=-
      Zum Anfang der Seite springen

So lautet die Fehlermeldung:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Quicksort.java:65: cannot resolve symbol
symbol: class Stoppuhr
location: class Quicksort
     Stoppuhr t = new Stoppuhr();
     ^
Quicksort.java:65: cannot resolve symbol
symbol: class Stoppuhr
location: class Quicksort
     Stoppuhr t = new Stoppuhr();

2 errors


Hope You Help


unglücklich

__________________
[DS]-=Pencil=-
---------------------------
Eleminate the Enemy | Staatsfeind
Destroy Facism
www.rtcw-prison.net - www.darksoldiers.de
----------------------------
21.08.2004 09:17 [DS]-=Pencil=- ist offline E-Mail an [DS]-=Pencil=- senden Homepage von [DS]-=Pencil=- Beiträge von [DS]-=Pencil=- suchen
MyK
Headbanger


Dabei seit: 24.01.2002
Beiträge: 84

      Zum Anfang der Seite springen

Gibt's denn überhaupt eine Klasse namens Stoppuhr? Ist sie exportiert/public?

__________________
Success consists of simply getting up one more time than you fall down.
21.08.2004 14:21 MyK ist offline Beiträge von MyK suchen
[DS]-=Pencil=- [DS]-=Pencil=- ist männlich
Senior Member


images/avatars/avatar-712.jpg

Dabei seit: 20.09.2002
Beiträge: 446
Herkunft: Berlin

Themenstarter Thema begonnen von [DS]-=Pencil=-
      Zum Anfang der Seite springen

nein, aber habe ich mit New Stopuhr nicht eine erstellt?
Gibt es ansonsten eine andere Variante wie ich das umgehen kann?

Hope You Help

unglücklich

__________________
[DS]-=Pencil=-
---------------------------
Eleminate the Enemy | Staatsfeind
Destroy Facism
www.rtcw-prison.net - www.darksoldiers.de
----------------------------
26.08.2004 10:24 [DS]-=Pencil=- ist offline E-Mail an [DS]-=Pencil=- senden Homepage von [DS]-=Pencil=- Beiträge von [DS]-=Pencil=- suchen
Deef Deef ist männlich
...


Dabei seit: 24.08.2002
Beiträge: 431

      Zum Anfang der Seite springen

Mit "new" bildet man Instanzen von Klassen ...

Klassen werden mit "class" definiert

__________________
Was sagen uns Signaturen?! 1.Ich kann Latein 2.Ich bin umheimlich tiefgründig 3.Ich kann googlen 4.Ich lese die Lyrics der Lieder die ich höre 5.Ich schreibe und denke mir Scheisse aus die keiner lesen will...
26.08.2004 11:55 Deef ist offline E-Mail an Deef senden Beiträge von Deef suchen
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Java rekursive Programmierung

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH