再帰
お世話になります。再帰でどう組んだらいいのかわからない問題があるので質問させてください
問題は、再帰を使ってlong型の整数に、3つずつの間隔でコンマを入れString型で返す演習問題です。
例)
999 → 999
1234 → 1,234
1007 → 1,007
1023004567 → 1,023,004,567
public static String intWithCommas(long n) {
String strnum = String.valueOf(n);
String str = "";
int length = strnum.length();
if (strnum.length() <= 3) {
return strnum;
} else {
str = "," + strnum.substring(length-4, length-1);
}
return str + intWithCommas(?);
}
上記のように組んだのですが、2箇所わからないところがあります。
カンマを入れるので整数を文字列に変換してsubstringで3つずつに分けてカンマを入れようと思ったのですが、
str = "," + strnum.substring(length-4, length-1); この部分をどのように直したらいいかがわかりません。
これではカンマが一番左に行ってしまうし、整数を3つずつにわけようにも、本来インデックスは左から数えますがこの場合は右から3つずつ数えなければなりません。
それと、最後の再帰を呼ぶところですが、intWithCommas(?);の中をどうしたらいいかがわかりません。
long型の整数を受け取ってるのでlong型の整数を入れるとおもうのですが、プログラムの中で整数をStringに変換してるのでどうしたらよいのでしょうか
宜しくお願いします。
お礼
ご回答ありがとうございます。 難しいです。なかなか理解できません。