這裏是打印二進制數的所有可能性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',這就是爲什麼只需要兩個這樣的調用。如果你通過代碼追蹤,這將變得清晰。 –