Leetcode答题 --- 将数字变成 0 的操作次数

题目

给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。

题目来源:leecode

示例

输入: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 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-steps-to-reduce-a-number-to-zero

限制

  • 0 <= num <= 10^6

思路

创建一个times变量用来保存步骤,默认值为1。判断num是否为偶数并作对应的操作,用一个变量保存操作后的结果,再对结果进行非0判断,0则返回times,反之则递归调用该函数

实现

if (num < 0 && num > 10e5) {
        return
    }
    let result = num
    let cur = times
    if (num % 2 === 0) {
        // 偶数
        result = num / 2
    } else {
        // 奇数
        result = num - 1
    }
    if (result !== 0) {
        cur++
        return numberOfSteps(result, cur)
    } else {
        return cur
    }

你可能感兴趣的:(Leetcode解题记录,Javascript)