java编写递归函数,接受int:k并打印到屏幕k的">
尝试:
public static String numStarec(int k) {
String ans = "";
if (k == 0) {
ans += "*";
return ans;
}
return numStarec(k-1);
}
这个代码不工作,只为我打印"*"我知道的问题
我试图解决这个问题,但不幸的是,没有成功
Example :
k = 3
console : ***
您可以在每次递归调用后附加一个星号,当k
是0
时,基本情况返回一个空字符串。
public static String numStarec(int k) {
if(k == 0) return "";
return numStarec(k-1) + "*";
}
演示
在编写问题的解决方案之前,我认为了解递归的定义以及希望发生什么对您来说是很有价值的。首先;递归是一种解决问题的方法,其中解决方案取决于同一问题的较小实例的解决方案";(来源(。
如果前面的定义仍然让你有点困惑,那么让我们看看你的问题的解决方案:
public static String numStarec(int k) {
if (k == 0) {
return "";
}
return numStarec(k-1) + "*";
}
正如定义所说;解决问题的方法"(在这种特定的情况下,你的问题是你想在屏幕上打印字符*K次(";。。。其中解决方案取决于对相同问题的较小实例的解决方案";(同一问题的这些较小实例在于找出还有多少个字符"*"需要打印,这就是K的值(
当你给函数numStarec
提供一个特定的数字K时,它会取K并检查它是否为0。如果K == 0
的求值结果为true,则返回语句将为""
,但当K != 0
的求值结果是true时,将发生的是函数将返回字符"0"*"并继续使用CCD_ 7的值来调用它自己并且再次相应地返回。
希望它能帮助你理解一点递归。