我正在尝试为以下任务制作算法:
- 我有两个整数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/