TU Wien:Einführung in die Programmierung 1 VU (Podlipnig)/Übungen zur Rekursion
Zur Navigation springen
Zur Suche springen
public class RecursionTraining {
// ABCD -> DCBA
public static String reverse(String s){
return null;
}
// Sollte wie s.equals(t) funktionieren.
public static boolean equalStrings(String s, String t){
return false;
}
// Der gegebene String enthält genau eine öffnende und eine schließende
// runde Klammer. Schreibe eine rekursive Funktion, welche den Text
// zwischen den Klammern (inklusive der Klammern) retourniert.
public static String betweenParen(String s){
return null;
}
// Lösche jedes zweite Zeichen eines Strings
// ABCD -> AC
public static String del2ndChars(String s){
return null;
}
// Lösche die ersten n Vorkommen des Zeichens x
// ABABAB, B, 2 -> AAAB
public String deleteNOccurrences(String text, char x, int n){
return null;
}
// Verschiebe alle 'x' in einem String an das Ende
// xaxbx -> abxxx
public static String mvToEnd(String text) {
return null;
}
// Verschiebe das kleinste Zeichen an den Anfang
// Vorbedingungen:
// * s != null
// * kleinstes Zeichen kommt nur einmal vor
// z.B. klein -> eklin
public static String shiftMinCharLeft(String s) {
return null;
}
// Gebe alle Permutationen eines Strings aus
public static void permutate(String text, int pos){
}
// Enthält n die Ziffer digit?
// z.B. 13, 3 -> true
// 13, 4 -> false
public static boolean containsDigit(int n, int digit){
return false;
}
// Index vom größten Wert eines Integer Arrays
public static int indexOfMaxValue(int[] arr){
return 0;
}
// Gebe eine Zahl in 3er-Blöcken aus, getrennt mit Beistrichen
// z.B. 234 -> 234
// 12005 -> 12,005
public static void formatNum(Long l){
}
//Gibt true zurück, wenn char m genau count-Mal im String sequence vorkommt, sonst false.
//isPresentNTimes("ABBAACBA", 'A', 4) -> true
//isPresentNTimes("ABBAACBA", 'Z', 0) -> true
//isPresentNTimes("ABBAACBA", 'A', 3) -> false
public static boolean isPresentNTimes(String sequence, char m, int count) {
}
public static void main(String[] args) {
}
}
Implementierungen von Gittenburg[Bearbeiten | Quelltext bearbeiten]
public static String reverse(String s){
if (s.length() < 2)
return s;
return s.charAt(s.length() - 1) + reverse(s.substring(0, s.length() - 1));
}
public static boolean equalStrings(String s, String t) {
return s.length() == t.length() && (s.length() == 0 ||
s.charAt(0) == t.charAt(0) && equalStrings(s.substring(1), t.substring(1)));
}
public static String betweenParen(String s){
if (s.charAt(0) != '(')
return betweenParen(s.substring(1));
else if (s.charAt(s.length() - 1) != ')')
return betweenParen(s.substring(0, s.length()-1));
else
return s;
}
public static String del2ndChars(String s){
if (s.length() < 2)
return s;
return s.charAt(0) + del2ndChars(s.substring(2));
}
public static String deleteNOccurrences(String text, char x, int n){
if (n > 0){
int idx = text.indexOf(x);
if (idx > 0)
return deleteNOccurrences(text.substring(0,idx) + text.substring(idx+1), x, n-1);
}
return text;
}
public static String mvToEnd(String text){
if (text.length() == 1)
return text;
else if (text.charAt(0) == 'x')
return mvToEnd(text.substring(1)) + 'x';
else
return text.charAt(0) + mvToEnd(text.substring(1));
}
public static String shiftMinCharLeft(String s) {
if (s.length() < 2)
return s;
String r = shiftMinCharLeft(s.substring(1));
if (r.charAt(0) < s.charAt(0))
return r.charAt(0) + "" + s.charAt(0) + r.substring(1);
else
return s;
}
public static void permutate(String text, int pos) {
if (pos == text.length() - 1)
System.out.println(text);
else
for (int i = pos; i < text.length(); i++) {
permutate(text.charAt(i) + text.substring(0, i) + text.substring(i+1), pos+1);
}
}
public static boolean containsDigit(int n, int digit){
if (n < 10)
return n == digit;
return (n % 10 == digit) || contains(n / 10, digit);
}
public static int indexOfMaxValue(int[] arr) {
if (arr.length == 1)
return 0;
int max = indexOfMaxValue(Arrays.copyOf(arr, arr.length - 1));
return max < arr[arr.length - 1] ? arr.length - 1 : max;
}
public static void formatNum(Long l){
String s = String.valueOf(l);
int count = s.length() % 3;
if (count == 0)
count = 3;
System.out.print(s.substring(0, count));
if (s.length() > count){
System.out.print(',');
if(s.charAt(count) == '0')
System.out.print('0');
if(s.charAt(count+1) == '0')
System.out.print('0');
formatNum(Long.valueOf(s.substring(count)));
}
}
public static boolean isPresentNTimes(String sequence, char marker, int count) {
if (sequence.isEmpty()) return false;
boolean charIn = (sequence.charAt(0) == marker);
if (sequence.length() == 1) return charIn
? count - 1 == 0
: count == 0;
return charIn
? isPresentNTimes(sequence.substring(1), marker, count - 1)
: isPresentNTimes(sequence.substring(1), marker, count);
}