前提・実現したいこと
Javaで再帰を使用して、{0,1}のビット列を組み合わせ列挙するシンプルな実装がちょっとわからず、教えていただきたいです。
nを要素数とします。例えばn=3とすると、
アウトプットとして、以下のビット列を列挙した 2^3(=8) 個のStringの配列(ないしはリスト)を取得したいです。
{111,110,101,100,011,010,001,000}
任意のnに対して、上記の結果が得られる実装を考えていたのですが、
以下のような再帰でない、かつ、冗長な実装しか思いつかず、、、
java
1import java.util.ArrayList; 2import java.util.List; 3 4public class Sample { 5 6 public static void main(String[] args) { 7 8 int n = 3; 9 int num_to = (int)Math.pow(2, n)-1; 10 List<String> result = new ArrayList<>(); 11 for (int i = num_to; i >= 0; i--) { 12 String bin = String.format("%"+n+"s",Integer.toBinaryString(i)) 13 .replace(' ', '0'); 14 result.add(bin); 15 } 16 17 for (String str : result) { 18 System.out.println(str); 19 } 20 21 } 22}
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー