算法設計與分析03-十進制轉二進制問題

10進制數轉2 進制數
題目:2 進制除了 0,1,還可以用 2 表示。例如:
1-> 1
2-> 10 or 02
3->11
4 ->100 or 020 or 012
問題:這樣一個十進制數轉爲二進制數,就不是唯一的了。現求十進制數 N 轉換爲這種二進制數的所有表示方法數。
f(0)=1, f(1)=1, f(2)=2,
f(n) = f( (n-1)/2) 當 n 爲奇數
f(n)= f(n/2)+f((n-2)/2 )當 n 爲偶數 
public class TenToTwo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println(getRes(sc.nextInt()));
    }
 
    private static int getRes(int n) {
        if (n == 0) {
            return 1;
        }
        if (n == 1) {
            return 1;
        }
        if (n == 2) {
            return 2;
        }
        if (n % 2 == 1) {
            return getRes((n - 1) / 2);
        } else {
            return getRes(n / 2) + getRes((n - 2) / 2);
        }
    }
}
 

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