私は再帰的に以下のJavaコードを記述しようとしている:このJava関数を再帰的に書くにはどうすればよいですか?
public static int count(String word) {
int numValue = 0;
int length = word.length();
for(int i=0; i<length; i++){
String alpha = "abcdefghijklmnopqrstuvwxyz";
String letter = (word.substring(0 + i,1 + i));
numValue = numValue + alpha.indexOf(letter) + 1;
}
return numValue;
}
public static void main(String[] args) {
System.out.println(count("abc"));
}
関数は、入力文字列パラメータで各文字のインデックスの合計を返します。
私はこの同じコードを習得してみようとしていますが、誰かが間違っている箇所を指摘できますか?
public static int count(int numValue, int i, String word) {
String alpha = "abcdefghijklmnopqrstuvwxyz";
if(i >= word.length()){
return numValue;
}
else{
String letter = (word.substring(0 + i,1 + i));
numValue = numValue + alpha.indexOf(letter) + 1;
count(numValue, i=i+1, word);
}
return numValue;
}
public static void main(String[] args) {
System.out.println(count(0,0, "abc"));
}
反復可能な場合は、なぜそれが再帰的になりたいのですか?通常、これらのすべての再帰呼び出しよりもループを使用するほうが高速です。 –
再帰関数は再帰呼び出しの値を格納したり、何もしません。 – UnholySheep
ようこそ!デバッグの助けを求める質問( "なぜこのコードは動作しないのですか?")には、目的の動作、_a特定の問題またはerror_を含める必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) –