比如 2位的二進制的編碼生成的編碼串:00 01 11 10
比如 3位的二進制編碼生成的編碼串:001 011 111 101 100 110 010 000
Groovy實現:
List?generateBinaryStrings(int?length)?{
????if?(1?==?length)?return?['0',?'1']
????List?tempBinaryStrings?=?generateBinaryStrings(length?-?1)
????return?[tempBinaryStrings.collect{?"0$it"?},?tempBinaryStrings.reverse().collect{?"1$it"?}].flatten()
}
println?generateBinaryStrings(2)
println?generateBinaryStrings(3)
????if?(1?==?length)?return?['0',?'1']
????List?tempBinaryStrings?=?generateBinaryStrings(length?-?1)
????return?[tempBinaryStrings.collect{?"0$it"?},?tempBinaryStrings.reverse().collect{?"1$it"?}].flatten()
}
println?generateBinaryStrings(2)
println?generateBinaryStrings(3)
運行結果:
[00, 01, 11, 10]
[000, 001, 011, 010, 110, 111, 101, 100]
[000, 001, 011, 010, 110, 111, 101, 100]
題目來源:http://www.aygfsteel.com/copydogcn/archive/2008/04/19/194256.html
附:朝花夕拾——Groovy & Grails