【发布时间】:2015-08-22 14:53:01
【问题描述】:
我想根据两个输入递归生成数组:
1) 输入数组,例如double[] in={0.25, 0.25, 0.5};
2) 步长,例如double step = 0.25;
函数foo() 应该接受这两个输入并生成以下数组:
{0.5, 0.25, 0.5} (add step 0.25 to first element)
{0.0, 0.25, 0.5} (subtract 0.25 from first element)
...等等。
所有 2^d 组合(这里 d=3)。 但我想在不指定维度 (d) 的情况下递归地执行此操作。
public void foo( double[] inatt, double[] outatt, double step, int d)
{
if( d = 0 )
{
// should print the array outatt:
}
else
{
outatt[d] = inatt[d]+step;
foo( inatt, outatt, step, d-1);
}
}
我不知道如何组织递归函数内部的调用.. 我猜如果事先不知道维数(d),那么它是我应该用来递归控制调用的变量吗?
【问题讨论】:
-
听起来好像要生成数组数组?
-
或者你想通过
Consumer<double[]>来避免内存不足。 -
@OliverCharlesworth,他只想打印每个组合而不存储它们。