我正在練習遞歸(至少這是我想我試圖做的)。我的期望是代碼打印出「dlrow olleh」11次,但它只會打印一次。原因?遞歸不起作用
import java.lang.StringBuilder;
public class Practice {
public static void main(String[] args){
String str = "hello world";
int count = new StringBuilder(str).length();
System.out.print(backwards(str, count));
}
public static String backwards(String word, int letters){
while(letters>0){
return new StringBuilder(word).reverse().toString();
}
return backwards(word,letters-1);
}
}
你似乎有交換了基本案例和遞歸案例。另外,遞歸中不需要while循環,這就是遞歸的用處 – UnknowableIneffable
但是除了交換案例之外,在這裏使用遞歸沒有意義:所有遞歸調用都是遞減一個變量,然後執行當這個值達到零時。相反,只要立即做那件事。如果你想練習遞歸,確保你正在做一些需要遞歸的東西:) –