java - 递归对数以找到最接近另一个整数 x 的形式 = (2)^n 的最大整数 (n)

标签 java recursion

我期望看到的结果:例如 分区(603=1+2+8+16+64+512) 正如你所看到的,它是 2 的幂。我似乎无法弄清楚出了什么问题。

    static String partition (int n){
            int a=0;
            if (n<=1)
                return String.valueOf(n);
            while ((int)Math.pow(2, a)<=n)
                a++;

            return partition(n-((int)Math.pow(2, a)))+ 
            ....."+"+ String.valueOf(Math.pow(2, a));
    }

最佳答案

static String partition (int n)
{
            int a=0;
            if (n<=1)
                return String.valueOf(n);
            while ((int)Math.pow(2, a)<=n)
                a++;

            return partition(n-((int)Math.pow(2, a-1)))+ 
            ....."+"+ String.valueOf(Math.pow(2, a-1));
}

我已将返回部分的 a 更改为 a-1。它会起作用,因为一旦 pow(2,a) 大于 n,我们应该使用 a-1 而不是 a as pow(2,a-1) 是小于 n 的 2 的最大幂

关于java - 递归对数以找到最接近另一个整数 x 的形式 = (2)^n 的最大整数 (n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42544920/

相关文章:

java - 解释数据字符串并将其插入到 Java 中正确列位置的 JTable 中

java - 正则表达式匹配额外文本

java - 无法使用 Eclipse (Neon) 配置 SonarQube

Python-用递归填充两个元素之间列表中的空格

期中考试时 Java 错误

c++ - 使用递归创建分形图案

java - 回文函数的递归

java - 我的 Java Internet 连接检查总是失败

java - Android如何加载新布局

function - 自定义 scala 递归预防机制的改进