对于此程序,其想法是使用递归方法一次在一个字符串中打印一个单词,假设空格之间只有一个单词。但是,当我按原样运行此程序时,它将打印字符串本身。
public static void stringByWords(String s) {
if (s.isEmpty())
return;
if (s.indexOf(" ") == 1)
stringByWords(s.substring(s.indexOf(" ") + 1) + "\n");
System.out.println(s);
}//end stringByWords
我意识到,仅通过循环将其作为迭代方法来进行操作会容易得多,但是我需要按照指示使用递归。关于我做错了什么的任何提示将不胜感激。
最佳答案
递归的技巧是遵循标准模式
func(context)
if context is very simple
process context
else
break context into several pieces
call func on each piece
因此,对于您的情况,简单的情况是一个单词没有空格。否则,分为两部分,并在每一部分上调用:
void printWords(String str) {
int space = str.indexOf(' ');
if (space == -1) {
System.out.println(str);
} else {
printWords(str.substring(0, space));
printWords(str.substring(space + 1));
}
}
关于java - Java递归方法,一次无字符串输出一个字符串中的一个单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50166340/