鉴于此方法,
public static String solve(int n, String start, String middle, String end)
我想要返回移动次数。我可以通过以下代码获得这个:
public static String solve(int n, String start, String middle, String end) {
if (n == 1) {
return Integer.toString(1);
}
return solve(n - 1, start, end, middle) + solve(n - 1, middle, start, end) + 1;
}
但是当我给1个磁盘时答案是1,当我给2个磁盘时答案是111,当我给3个磁盘时答案是1111111,4个是111111111111111,依此类推。每个字符串中1的数字代表一个移动,但我不想要1,我想要1,3,7,15等等。我怎样才能改变这段代码让我得到后面的数字呢?
答案 0 :(得分:2)
三种可能的解决方案:
solve
更改为返回int;首先将return
更改为return 1;
solve
,但在变量String
中抓取结果s
并打印s.length()
而不是s
本身; solve
并使用公式Math.pow(2, n) - 1;