Hallo erstmal an alle die schon Java programmieren können 
mal wieder gibts hier jemanden der sich mit Java beschäftigen soll fürs Studium. ICh WEISS das hier niemand hausaufgaben macht, sollt ihr auch nicht
ich habe nur ein paar Fragen bzw. brauch nen Denkanstoß:
Das hier ist die Aufgabe:
Gegeben seien die beiden folgenden rekursiven Algorithmen (n sei dabei eine natürliche Zahl von 0 an gerechnet):
Algorithm: wife(n)
Input: n ganzzahlig, n>=0
Output: ?
if n = 0 then 1
else n - husband(wife(n - 1))
fi
Algorithm: husband(n)
Input: n ganzzahlig, n>=0
Output: ?
if n = 0 then 0
else n - wife(husband(n - 1))
fi
Jetzt kommt noch die Funktion fight hinzu, die ermittelt, ob am Hochzeitstag gestritten wird:
Algorithm: fight(n)
Input: n ganzzahlig, n>=0
Output: ?
not(wife(n) = husband(n))
hinzu.
Programmieren Sie die obigen Algorithmen als Java-Methoden
public static int wife(int n)
public static int husband(int n)
public static boolean fight(int n)
Wie entwickelt sich die Differenz der Streits an den Hochzeitstagen? Am nullten und am ersten Hochzeitstag gibt es Streit. Demzufolge ist die erste Differenz zwischen den Streitereien 1 (nämlich ein Jahr). Schreiben Sie die Methode
public static int[] differenceFights(int n)
zur Bestimmung der ersten n Differenzen zwischen den Streits an den Hochzeitstagen. Erkennen Sie eine Gesetzmäßigkeit bzw. Zahlenfolge?
Schreiben Sie innerhalb der main-Methode einen geeigneten Testrahmen, damit Sie folgende Fragen beantworten können:
Finden dann die Kupferne (nach 7 Jahren)- und die Silberne Hochzeit in Frieden oder im Streit statt?
Verstehen sich husband und wife über die Jahre hinweg besser oder schlechter?
Das Hier ist mein bisheriger Quellcode:
[Java]
import java.util.*;
public class Conflict {
public static int wife(int n) {
// TODO: source code
if(n<=0){
return 0;
}else {
return n - husband(wife(n - 1));
}
}
public static int husband(int n) {
// TODO: source code
if(n <= 0){
return 1;
}else {
return n - wife(husband(n - 1));
}
}
public static boolean fight(int n) {
// TODO: source code
int z;
return false;
}
/* public static int[] differenceFights(int n) {
// TODO: source code
}*/
public static void main(String args[]) {
// TODO: test data
System.out.println(wife(121)); //Ergebnis 75
System.out.println(husband(121)); //Ergebnis 75
}
}
[/Java]
Die wichtigste Fragefür mich währe zuerst einmal: wieso kommen in der Main für beide Funktionen die selben Werte raus? So macht diese Aufgabe doch keinen Sinn? Oder täusche ich mich?
mal wieder gibts hier jemanden der sich mit Java beschäftigen soll fürs Studium. ICh WEISS das hier niemand hausaufgaben macht, sollt ihr auch nicht
ich habe nur ein paar Fragen bzw. brauch nen Denkanstoß:
Das hier ist die Aufgabe:
Gegeben seien die beiden folgenden rekursiven Algorithmen (n sei dabei eine natürliche Zahl von 0 an gerechnet):
Algorithm: wife(n)
Input: n ganzzahlig, n>=0
Output: ?
if n = 0 then 1
else n - husband(wife(n - 1))
fi
Algorithm: husband(n)
Input: n ganzzahlig, n>=0
Output: ?
if n = 0 then 0
else n - wife(husband(n - 1))
fi
Jetzt kommt noch die Funktion fight hinzu, die ermittelt, ob am Hochzeitstag gestritten wird:
Algorithm: fight(n)
Input: n ganzzahlig, n>=0
Output: ?
not(wife(n) = husband(n))
hinzu.
Programmieren Sie die obigen Algorithmen als Java-Methoden
public static int wife(int n)
public static int husband(int n)
public static boolean fight(int n)
Wie entwickelt sich die Differenz der Streits an den Hochzeitstagen? Am nullten und am ersten Hochzeitstag gibt es Streit. Demzufolge ist die erste Differenz zwischen den Streitereien 1 (nämlich ein Jahr). Schreiben Sie die Methode
public static int[] differenceFights(int n)
zur Bestimmung der ersten n Differenzen zwischen den Streits an den Hochzeitstagen. Erkennen Sie eine Gesetzmäßigkeit bzw. Zahlenfolge?
Schreiben Sie innerhalb der main-Methode einen geeigneten Testrahmen, damit Sie folgende Fragen beantworten können:
Finden dann die Kupferne (nach 7 Jahren)- und die Silberne Hochzeit in Frieden oder im Streit statt?
Verstehen sich husband und wife über die Jahre hinweg besser oder schlechter?
Das Hier ist mein bisheriger Quellcode:
[Java]
import java.util.*;
public class Conflict {
public static int wife(int n) {
// TODO: source code
if(n<=0){
return 0;
}else {
return n - husband(wife(n - 1));
}
}
public static int husband(int n) {
// TODO: source code
if(n <= 0){
return 1;
}else {
return n - wife(husband(n - 1));
}
}
public static boolean fight(int n) {
// TODO: source code
int z;
return false;
}
/* public static int[] differenceFights(int n) {
// TODO: source code
}*/
public static void main(String args[]) {
// TODO: test data
System.out.println(wife(121)); //Ergebnis 75
System.out.println(husband(121)); //Ergebnis 75
}
}
[/Java]
Die wichtigste Fragefür mich währe zuerst einmal: wieso kommen in der Main für beide Funktionen die selben Werte raus? So macht diese Aufgabe doch keinen Sinn? Oder täusche ich mich?
Zuletzt bearbeitet von einem Moderator: