题目
给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1
思路
定义一个while循环 当这个num为0时 结束循环 如果这个数为取余为0时则为偶数 直接处以2 此时次数自增 如果为奇数 则减去1 然后次数自增 一直到这个数字等于0 跳出循环算出次数
遇到的问题
while循环使用不熟练 开始找不到思路 后来看了一眼题解 想到了while循环 因为while循环当设定的判断条件不成立时会跳出循环或结束循环
while循环中break,continue,return 的区别
break 跳出循环;
continue 继续循环,(不执行 循环体内continue 后面的语句,直接进行下一循环)
return 跳出函数,返回调用函数 处。
代码
public class NumOfSteps {
public static void main(String[] args) {
int num = 123;
int i = numberOfSteps(num);
System.out.println(i);
}
public static int numberOfSteps(int num) {
int count = 0;
while (num != 0) {
if (num % 2 == 0) {
num = num / 2;
count++;
} else {
num = num - 1;
count++;
}
}
return count;
}
}