如果你从1美元开始,每走一步,你可以把钱翻倍或者再加1美元,那么你必须走多少步才能达到n美元
我写了一些代码,但是看起来它在结束之前就停止了。 我想我需要另一个循环为else,但找不到解决方案。 有人能帮我调整代码吗? 如果可能的话,我不想要复杂的代码。
public class NumberOfMoves {
public static void main(String[] args) {
int n$ = 200; //target number of bucks
int steps = 0;
for (int i = 0; i < n$; i++) {
if (n$ % 2 == 0) { //if 200/2 equals even number than n$/2== this number
n$ = n$ / 2;
steps++;
// System.out.println(n$);
} else {
n$ = n$ - 1;
steps++;
} // end else
}// end loop
System.out.println("Steps " + steps);
} //end main
} //end class
您不知道何时应该退出for
循环。 您正在减少n$
,看起来应该在n$
为1时立即停止。 那么i
在做什么呢? 它正在计数,并将在n$
达到1之前的某个时间点达到n$
。 我认为循环应该是while(n$>1)
。
package sample;
class Main1
{
public static void main(String[] args) {
int n$ = 200; //target number of bucks
int steps = 0;
while (n$>1) {
if (n$ % 2 == 0) { //if 200/2 equals even number than n$/2== this number
n$ = n$ / 2;
steps++;
// System.out.println(n$);
} else {
n$ = n$ - 1;
steps++;
} // end else
}// end loop
System.out.println("Steps " + steps);
} //end main
} //end class}
可以使用while代替for