2016-03-20 10 views
-1

Ich habe eine Funktion mit dieser bereits vordefinierten prototype: int sumInd(char ch, String str). Ich muss rekursive Funktion erstellen, die die Summe der Indizes zurückgibt, wobei das Zeichen d in String n erscheint.Rekursive Funktion mit bereits vordefiniertem Prototyp

Ist es mit diesem Prototyp möglich, wenn nein, wie würdest du es tun?

+0

Hat das wirklich "Prototyp" genannt? – nekavally

+0

Randnotiz: Es gibt keine "Prototypen" in der Java-Sprache. Ein Teil der Lernprogrammierung besteht darin, sicherzustellen, dass Sie die richtige Terminologie verwenden. Normalerweise können Leute dir nicht helfen, wenn du Wörter verwendest, die für andere keinen Sinn ergeben ... – GhostCat

+0

@ Jägermeister Ich verstehe, dass es keine Prototypen gibt, aber ich habe bereits definierte Funktionen, die ich bauen muss, und ich nannte es Prototypen . Entschuldigen Sie das Durcheinander. –

Antwort

0

Ohne die gesamte Lösung für Sie zu schreiben, hier sind einige Richtungen:

Die Summe der Indizes, die die gegebenen Zeichen enthalten, können in den ersten str.length - 1 Zeichen der Zeichenfolge, die Zeichen auf die Summe der Indizes gebrochen werden, die Plus 0 oder str.length - 1 (der Index des letzten Zeichens), abhängig davon, ob das letzte Zeichen dem gegebenen Zeichen entspricht oder nicht.

Der Trick ist, das letzte Zeichen des Strings vor jedem rekursiven Aufruf zu entfernen, damit die verbleibenden Zeichen den gleichen Index haben, den sie im ursprünglichen String hatten.

+0

Es ist erwähnenswert, dass, um [einen Fehler] zu beheben (http://bugs.java.com/view_bug.do?bug_id=6294060), "StringString" _copies_ das zugrundeliegende Array in ein neues Array kopiert; Dies macht den rekursiven Ansatz zu einer schrecklichen Leistung. Es sei denn, Sie verwenden das 'char []' direkt. –

+0

@BoristheSpider Guter Punkt, aber ich nehme an, Leistung ist keine Voraussetzung in dieser Übung. Andernfalls würde Rekursion nicht an erster Stelle verwendet werden. – Eran

+0

@Eran Hallo Eran, Vielen Dank für Ihre Antwort. –