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 に答える