算法设计与分析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);
        }
    }
}
 

    原文作者:算法
    原文地址: https://www.twblogs.net/a/5bd3a82d2b717778ac20a784
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞