メソッドのオーバーロードを実装せずに、再帰を使用して配列を設定する方法はありますか? 引数として int のみを取り、配列を返すメソッドを構築したいと考えています。私が考えた唯一の解決策は、メソッドのオーバーロードを使用することです。int を引数として取る関数は、配列を作成し、配列と int の両方を 2 番目の関数に渡します。この関数は、int と配列の両方を引数として取り、実際の再帰を実装します。
次に例を示します。
public static int[] recursiveBuilder(int depth, int[] anArray){
// Base case:
if (depth < 0){
return anArray;
}
// Recursion:
else{
anArray[depth] = depth;
depth--;
return recursiveBuilder(depth, anArray);
}
}
public static int[] recursiveBuilder(int depth){
return recursiveBuilder(depth, new int[depth + 1]);
}
オーバーロードの再帰部分で配列を宣言すると、再帰が呼び出されるたびに配列が初期化されるため、2 つ目の関数を使用して配列を宣言しました。
このアプローチは良いと考えられますか? 効率的?このダイナミクスを 1 つのメソッドだけに実装する方法はありますか?