O
Oldepieder
Gast
Hallo vorab,
Also habe diese Aufgabe bekommen. Wir sollen diese Vorhanden Programme von Iterativ in Rekursiv umwandeln. Leider war ich länger krank in der Schule und kannte dem Unterrichtsstoff nicht folgen. Habe mich dann dran gesetzt und versucht es zu lösen habe auch Teile davon geschafft leider stehe ich bei den Aufgaben mit dem Man vor dem Fehrnsehr und max iterativ/rekusiv auf dem Schlauch. Würde mich über Lösungen freuen
Also habe diese Aufgabe bekommen. Wir sollen diese Vorhanden Programme von Iterativ in Rekursiv umwandeln. Leider war ich länger krank in der Schule und kannte dem Unterrichtsstoff nicht folgen. Habe mich dann dran gesetzt und versucht es zu lösen habe auch Teile davon geschafft leider stehe ich bei den Aufgaben mit dem Man vor dem Fehrnsehr und max iterativ/rekusiv auf dem Schlauch. Würde mich über Lösungen freuen
Java:
import java.io.*;
import java.lang.String.*;
class RekursionAufgabenInfosUndHilfen2010
// Anfang Attribute
// Ende Attribute
{ /* Zum Testen von Methoden benötigt man eigentlich keine Objekte.
daher setzt man das Wörtchen "static" vor die Methoden und Funktionen und
Variablen, was meint, das eben keine Objekt dieser Klasse erzeugt werden muss,
um sie zu benutzen. Solche Klasse static-Methoden ist z.B. die Klasse
Math, deren Funktionen wie sin, cos, und Konstanten wie PI ich ohne ein
new Math() benutzen kann.
*/
/* Die startFernsehn-Methode soll die an der Tafel skizzierte Darstellung liefern z.B.
Dabei ist die Einrückung nur eine Zusatzaufgabe.
Man filmte einen Mann,
der einen Mann sah,(1)
der einen Mann sah,(2)
der einen Mann sah,(3)
der fern sah(3)
er fern sah(2)
er fern sah(1)
der fern sah
Die Methoden pot (Potenz) , reverse, sind Lösungen aus der Stufe 11 und
funktionieren als
iterative Lösungen
d.h. die Wiederholung ist mit einer Schleife realisiert
Lösche den alten Funktionenrumpf und realisiere eine rekursive Lösung!
Mit einer rekursiven Funktion int max (int [] reihe, int suchGrenze)
soll das größte Element einer Reihung bestimmt werden. Die iterative Lösung findest du unten!
Dabei sollte man vielleicht die Hilfsfunktion zur Bestimmung des Maxiumums zweier
Zahlen benutzen. (s.u.)
!!!Vor dem Starten mit dem Javaeditor muss man bei
---> Fenster --> Konfiguration --> Optionen
Programme ohne Konsolenfenster starten deaktivieren,
weil man sonst keine Tastatureingaben vornehmen kann. !!!
*/
// Anfang Methoden
/*
static double pot(double basis, int exponent)
{
int zähler = 1;
double ergebnis = 1;
while(zähler <= exponent)
{
ergebnis *= basis;
zähler++;
}
return ergebnis;
}
*/
static double pot(double basis, int exponent)
{
if(exponent>0)
{
return basis*pot(basis,exponent-1);
}
else
{
return 1;
}
}
/*
static String reverse(String s)
{
String tmp = "";
for ( int i = s.length() - 1; i >= 0; i-- )
{
tmp += s.charAt(i);
}
return tmp;
}
*/
static String reverse(String s)
{
String buchstabe = "";
if(s.length()>1)
{
buchstabe += s.charAt(0);
s = s.substring(1);
return reverse(s)+buchstabe;
}
else
{
return s;
}
}
static boolean palindrom(String s)
{
return s.equals(reverse(s));
}
//Beispiel für eine Funktion mit einem Array-Parameter static int lastElement(int[] reihe) {
//return reihe[reihe.length-1];
// Iterative Lösung des Maximums einer Reihe
static int max(int a, int b) //Hilfsfunktion! Bitte auch benutzen!!
{
if (a<b) return b;
return a;
}
static int maxRekursiv (int [] reihe, int suchGrenze) //Rekursive Lösung { return 0; } //Das Beispiel aus dem Einstieg angefangen static void startFernsehn(int insgesamt)
{
return 0;
}
static void fernsehn(int zaehler, int insgesamt) {
//Aufgabe
//int zaehler=1;
System.out.println("Man filmte einen Mann, " );
//fernsehn(zaehler,insgesamt);
System.out.println("der fern sah" );
}
public static void main(String args[]) throws IOException // Hauptprogramm
{ System.out.println("Die Ausgabe der ersten 10 Potenzen von 4 ergibt: ");
for (int i=0; i<=10; i++)
{ System.out.print(" "+pot(4, i));
}
System.out.println("");
/* zum Testen von reverse und Palindrom über Tastatureingeabe
deswegen steht nämlich auch trows IOException bei der main-Methode
*/
/**********************************************************/
InputStreamReader tastaturLeser = new InputStreamReader(System.in);
BufferedReader eingabe = new BufferedReader(tastaturLeser);
System.out.println("Gib einen Text zum Umdrehen ein: ");
String s=eingabe.readLine(), umgedreht=reverse(s);
eingabe.close();
System.out.println("Umgedreht: "+umgedreht);
if(s.equals(umgedreht))
System.out.println(s+" ist Palindrom");
else System.out.println(s+" ist kein Palindrom");
/***********Beispiel zum Test der lastElement-Funktion*****/
int [] reihe= { 3, 2, 17, 15, 8, 18 };
System.out.println("Reihe: ");
for (int i=0; i<reihe.length; i++)
{ System.out.print(" "+reihe[i]);
}
System.out.println("");
//System.out.println("last: "+ lastElement(reihe));
System.out.println("Max: "+ maxIterativ(reihe));
/***********************************************************/
//startFernsehn(3) ;
} // Ende von main
// Ende Methoden
} // Ende von class RekursionAufgabenInfosUndHilfen2010