Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
---- Logik (http://www.informatikerboard.de/board/board.php?boardid=16)
----- Strings - Zeichen vergleichen (http://www.informatikerboard.de/board/thread.php?threadid=2586)


Geschrieben von Tina_92 am 16.11.2015 um 23:33:

  Strings - Zeichen vergleichen

Meine Frage:
Hi zusammen,

ich bringe gerade keine Abbruchbedingung für folgende Aufgabe hin:

Given a string, compute recursively (no loops) the number of lowercase 'x' chars in the string.

countX("xxhixx") ? 4
countX("xhixhix") ? 3
countX("hi") ? 0




Meine Ideen:
Mein Code:

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:

package string_rekursiv;

public class String_Rekursiv 
{
    public static void main(String[] args) 
    {
        System.out.println(countX("xxhi"));
    }    

    static int countX (String str)
    {
        char [] array = new char [str.length()];
        array = str.toCharArray();
        
        
        int i=0;
        if (i<array.length)
        {
            return array[i]=='x'?1 + countX(str) :0 + countX(str);
        }
        return 0; 



Wie schaffe ich es denn, dass meine rekursive Funktion nach einer gewissen Anzahl an Durchlaufen abbricht?



Vielen Dank!



Geschrieben von eulerscheZahl am 17.11.2015 um 06:47:

 

Du musst den Index, wo du gerade liest, mit an die Funktion übergeben.

Das str.toCharArray() kannst du dir sparen (braucht unnötig Speicher), str.charAt(index) tut es auch.



Geschrieben von Tina_92 am 20.11.2015 um 10:35:

 

Danke für die Antwort. Aber ich darf doch der Funktion nicht einfach ein Integer hinzufügen?



Geschrieben von eulerscheZahl am 20.11.2015 um 15:32:

 

Dann ruft eben countX(String) countX(String, 0) auf, wenn du den Kopf nicht ändern darfst.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH