如何解决归零需要多少步骤
有人可以用JavaScript解决这个问题吗?
给出一个非负整数num,返回将其减少为零的步数。如果当前数字是偶数,则必须将其除以2,否则,必须从中减去1。
示例1:
输入:num = 14 输出6 说明: 步骤1)14是偶数;除以2得到7。 步骤2)7为奇数;减去1并得到6。 步骤3)6是偶数;除以2并得到3。 步骤4)3为奇数;减去1并得到2。 步骤5)2是偶数;除以2得到1。 步骤6)1为奇数;减去1并获得0。 示例2:
输入:num = 8 输出4 说明: 步骤1)8为偶数;除以2并得到4。 步骤2)4是偶数;除以2得到2。 步骤3)2是偶数;除以2得到1。 步骤4)1为奇数;减去1并获得0。 范例3:
输入:num = 123 输出:12
这也是递归问题的一个例子吗?
var numberOfSteps = function(num) {
};
///What I have tried
var numberOfSteps = function(num) {
if(Math.sign(num) === -1){
console.log('Number has to be positive')
}
else if(num % 2 === 0){
num = num/2
if(num % 2 !== 0){
num = num - 1
if(num !== 0){
num = num / 2
if(num % 2 !== 0){
num = num - 1
if(num % 2 === 0)
}
}
}
}
};
console.log(numberOfSteps(14))
解决方法
您可以简单地模拟该过程,方法是在计算迭代次数的同时(视情况而定)连续减半并将其减少直到达到0
。
var numberOfSteps = function(num) {
let steps = 0;
while(num > 0){
if(num % 2 === 0) num /= 2;
else --num;
++steps;
}
return steps;
};
console.log(numberOfSteps(123));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。