在练习时练习练习问题!网站,我遇到了这个问题:
public static void mystery(int x) {
int y = 1;
int z = 0;
while (2 * y <= x) {
y = y * 2;
z++;
}
System.out.println(y + " " + z);
}
给出的x整数是:
mystery(1)
mystery(6)
mystery(19)
mystery(39)
mystery(74)
我得到的唯一答案是神秘1,这是1 0。z ++让我感到困惑 对于其他人,我已经尝试了几个答案,但都没有工作。我试图解决这个问题的方法是(使用神秘(6)整数): 从(2 *(1)&lt; =(6)) {y =(1)* 2; y = 2 对于神秘(6)我把2(y值)和5作为z值(因为我认为从x值开始,每个+1的z值会增加。这是错误的,所以我尝试了2 1,因为我想也许z只会增加一个,这也是错误的。
我为这么糟糕的帖子道歉,但我没有太多时间发布这个(不是截止日期,但只是一堆与此无关的东西需要完成)任何帮助都将不胜感激!谢谢!
答案 0 :(得分:0)
y值会按此数量变化 y = y * 2; 每次循环
所以你得到: y值|时间循环
1 | 0
2 | 1
4 | 2
8 | 3
等