第二题小弟想了一个算法 不知道对不对 public static int MinPath (int target){ double pow = Math.log(target)/Math.log(2); if (pow % 1 == 0) return (int)pow; int addPath, subPath; int Path = 0; //递归 if (target == 1) return Path; if (target % 2 != 0){ addPath = MinPath(target + 1); subPath = MinPath(target - 1); return 1 + Math.min(addPath, subPath); }else { while (target % 2 == 0){ target = target/2; Path += 1; } return Path + MinPath(target); } }