Java 使用递归方法填充字符串列表(递归填充方法)

Java 使用递归方法填充字符串列表(递归填充方法),java,arrays,recursion,methods,Java,Arrays,Recursion,Methods,我想编写一个递归方法,填充并返回长度为n的“蓝色”或“红色”的随机球的String[]列表,其中n是一个随机奇数 我编写此方法是为了生成范围为1-10的奇数,作为递归方法的参数 public int ranNum (int ranN) { int min = 1 int max = 10 Random r = new Random(); ranN = min + r.nextInt((max - min)/2)*2; return r

我想编写一个递归方法,填充并返回长度为
n
的“蓝色”或“红色”的随机球的
String[]
列表,其中
n
是一个随机奇数

我编写此方法是为了生成范围为1-10的奇数,作为递归方法的参数

public int ranNum (int ranN) {
    int min = 1
    int max = 10
    
    Random r = new Random();
    
    ranN = min + r.nextInt((max - min)/2)*2;

    return ranN;
}

(随机奇数)方法正确吗?如何实现递归方法?

递归函数是直接或通过任意数量的中间函数调用自身的函数

第一步通常是考虑终止。在您的情况下,您需要从
1
开始计数到
n
,或者从
n
开始计数到
1
。当函数终止时,您可以选择返回最终值(称为尾部递归)或通过向上遍历调用堆栈开始构建答案。当您有一个较长的计算,并且只需要最后一个值(例如斐波那契数)时,将使用后者

然后做每一步的工作:

String[]尾递归(int n,String[]累加器,随机rnd)
{
如果(n==0){
回流蓄能器;
}
累加器[n-1]=rnd.nextBoolean()?“红色”:“蓝色”;
返回递归(n-1,累加器,rnd);
}

该方法是通过
tailRecursion(10,新字符串[10],新随机())调用的。

您必须调用函数中的函数。我编写的生成奇数(n)的方法是正确的吗?它似乎是正确的。但是你想要两个结果,“蓝色”和“红色”,这里一个随机布尔值就足够了。