1
對於Java練習,我開始研究一種方法countBinary
,該方法接受一個整數n
作爲參數,打印所有具有n
數字的二進制數字,將每個值打印在單獨的行上。假設n爲非負數且大於0,則某些示例輸出看起來像this。Java - 複雜遞歸回溯
我幾乎沒有這個地方。我能夠編寫一個程序,查找所有可能的String
字母組合以及類似的東西,但我一直無法使用二進制和整數對這個特定問題取得任何進展。
顯然,解決此問題的最佳方法是定義一個幫助器方法,該方法接受與原始方法不同的參數,並將最終打印的字符串集合爲一組字符。
重要說明:本練習中我不應該使用for循環。
編輯 - 重要提示:我需要拖尾0以便所有輸出的長度相同。
到目前爲止,這是我:
public void countBinary(int n)
{
String s = "01";
countBinary(s, "", n);
}
private static void countBinary(String s, String chosen, int length)
{
if (s.length() == 0)
{
System.out.println(chosen);
}
else
{
char c = s.charAt(0);
s = s.substring(1);
chosen += c;
countBinary(s, chosen, length);
if (chosen.length() == length)
{
chosen = chosen.substring(0, chosen.length() - 1);
}
countBinary(s, chosen, length);
s = c + s;
}
}
當我運行我的代碼我的輸出看起來像this。
任何人都可以向我解釋爲什麼我的方法沒有按照我期望的方式運行,並且如果可能的話向我顯示解決方案,以便我可以得到正確的輸出?謝謝!
謝謝!我將用它作爲未來問題的一個模板,我一定會繼續研究它,直到我完全理解你用遞歸完成了什麼。你幫了很多! – Trafton