这里是打印二进制数的所有可能性n
代码等于3
:这段代码如何完成它需要做的事情?
public class Main {
static void binary(int N, int[] A) {
if(N < 1)
System.out.println(Arrays.toString(A));
else
{
A[N-1] = 0;
binary(N-1,A);
A[N-1] = 1;
binary(N-1,A);
}
}
public static void main(String[] args) {
int[] a = new int[3];
binary(3,a);
}
}
代码工作完全正常。我能够看到有两个递归调用,我无法理解这是如何工作的。为什么需要两次递归调用?
两个递归调用都需要在创建每个可能的位配置每个位置。由于唯一的值可能是'0'或'1',这就是为什么只需要两个这样的调用。如果你通过代码追踪,这将变得清晰。 –