3

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 : ***
4

2 回答 2

1

您可以在每次递归调用后附加一个星号,基本情况在kis时返回一个空字符串0

public static String numStarec(int k) { 
    if(k == 0) return "";
    return numStarec(k-1) + "*";
}

Demo

于 2021-01-08T22:07:47.123 回答
0

在编写问题的解决方案之前,我认为了解递归的定义以及您想要发生的事情对您很有价值。首先,“递归是一种解决问题的方法,其中解决方案取决于同一问题的较小实例的解决方案”(来源)。

如果前面的定义仍然让您感到困惑,那么让我们看一下您的问题的解决方案:

public static String numStarec(int k) {
    if (k == 0) {
        return "";
    }
    return numStarec(k-1) + "*";
}

正如定义所说,“解决问题的方法......”(在这种特定情况下,您遇到的问题是您想在屏幕上打印字符 * K 次)“......解决方案取决于相同问题的较小实例的解决方案”(相同问题的这些较小实例包括找出还有多少字符 '*' 需要打印,这就是 K 的值)

当您为函数numStarec提供某个数字 K 时发生的情况是,它将接受 K 并检查它是否为 0。如果K == 0计算结果为真,则返回语句将是"",但是当K != 0计算结果为真时,将发生的情况是该函数将返回字符“*”并继续使用 of 的值调用自身,K-1并再次相应地返回。

希望它可以帮助您对递归有所了解。

于 2021-01-08T22:39:30.913 回答