藍橋杯-算法訓練-2的次冪表示(Java)

題目給了提示用遞歸,遞歸確實好理解一些

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.close();

        System.out.println(dfs(n));
    }

    private static String dfs(int n){
        StringBuilder sBuilder = new StringBuilder();
        String bin = Integer.toBinaryString(n);
        int pow = bin.length() - 1;
        int index = 0;
        while (pow >= 0){
            if(bin.charAt(index) == '1') {
                sBuilder.append("+");
                if (pow == 0) {
                    sBuilder.append("2(0)");
                } else if (pow == 1) {
                    sBuilder.append("2");
                } else {
                    sBuilder.append(String.format("2(%s)", dfs(pow)));
                }
            }
            pow--;
            index++;
        }
        return sBuilder.toString().substring(1);
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章