0

这里有一个案子。试图解决它,但不明白如何去做。

情况是:如果数能被2整除,则减半——否则,应乘以3,这个结果加1,这样一直持续到结果为1

我不明白如何在java中设置它。我尝试了 if、else if 和 else。但我不知道如何让它工作。

有小费吗?

4

3 回答 3

3

这是伪代码..按照它应该可以工作。

while num > 1
   if num mod 2 is 0 
      num/=2
   else
      num*=3 
      ++num
于 2012-11-19T18:17:14.757 回答
1

我会在测试和除法步骤中使用按位运算,应该比数字除法和取模更快。

while (x != 1) {
  x = (x & 1) != 0 ? x * 3 + 1 : x >> 1;
}
于 2012-11-19T18:23:55.500 回答
0

不确定您要做什么,但有一个提示:

x = (x % 2 == 0) ? (x / 2) : (x * 3 + 1)
于 2012-11-19T18:17:13.830 回答