julez:
どのように私はNの行動整数与えられたJavaのストリームを使用しないことは、あるNが奇数の場合、それから1を減算し、Nが偶数の場合Nが0になるまで、2で割り?
これは、手続き的なスタイルを使用して、私の作業コードです:
public static int solution(int num) {
int counter = 0;
while(num != 0) {
num = (num % 2 == 0) ? num / 2 : num - 1;
counter++;
}
return counter;
}
ernest_k:
あなたは使用することができIntStream.iterate
、同じロジックで:
public static long solutionStream(int num) {
return IntStream.iterate(num, i -> i % 2 == 0 ? i / 2 : i -1)
.takeWhile(i -> i > 0)
.count();
}
ただ、ノートtakeWhile
9+ Javaでのみ利用可能であり、それはによって生成さ無限ストリームを終了するには、ここで必要なのですiterate
。