我正在尝试为以下任务制定一种算法:

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

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

    有人有什么想法吗?

    最佳答案

    这是通过最小操作数目来查找转换的方法:

    (编辑:添加了括号)

    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/

    10-11 02:06
    查看更多