java - 使用递归将数字转换为不同的数字

标签 java algorithm recursion

我正在尝试为以下任务制作算法:

  • 我有两个整数a≤b
  • 该算法必须通过加 1 和乘以 2 运算将 a 转换为 b。例如,如果 a = 5 和 b = 23,程序应该输出类似于 23 = ((5 * 2 + 1) * 2 + 1)
  • 我必须使用递归

我已经用 Google 搜索了很多次,但我所能找到的只是关于如何转换矩阵、如何进行几何转换、如何将字符串转换为另一个字符串以及类似内容的想法。

有没有人有什么想法?

最佳答案

这是找到具有最小数量操作的转换的方法:

(编辑:添加括号)

public static void main (String [] args)
{
    int a = 5, b = 23;
    System.out.println (transform (a, b) + " = " + b);
}

public static String transform (int a, int b)
{
    if (a == b) return "" + a;
    if (b % 2 == 0 && 2 * a <= b)
    {
        b = b / 2;
        return transform (a, b) + " * 2";
    }
    else
    {
        b = b - 1;
        return "(" + transform (a, b) + " + 1)";
    }
}

关于java - 使用递归将数字转换为不同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6157424/

相关文章:

java - 在java中搜索单词内的字符串

java - 添加一个节点到循环链表

algorithm - 多少个长度为N的数字连续K个数字D

c++ - 为了将二叉树遍历到列表中

python - 尝试编写递归 "random walk"函数

java - 从 IntroSort 转到 MergeSort

java - 使用 Active Directory 在 android 中进行单点登录

java - 编写整数数组的递归排序算法

algorithm - 单位立方体的边长,给定一个需要使用N个单位立方体来平铺/填充给定尺寸的3D空间

algorithm - 表示连续概率分布