为什么使用reduce count算法返回计数值不正确?

时间:2017-01-21 00:54:57

标签: javascript jquery

我正在使用最小步骤减少到一个算法。我尝试实现但我在javascript中发现了一个问题。当我使用10数字

时失败

我的函数提供输出4 ..但预期为3

为什么3?

  • 10-1 = 9
  • 9/3 = 3
  • 3/3 = 1

因此计数为3,但我的函数为4引用

Given an integer N and a set of operations, reduce N to 1 in the least amount of steps

Minimum Steps to One

function abc(n) {
            var count = 0;

            while (true) {
                if (n === 1) {
                    break;
                }else if (n % 3 == 0) {
                    count++;
                    n = n / 3;

                } else if (n % 2 == 0) {
                    count++
                    n = n / 2

                } else {
                    count++
                    n = n - 1;
                }
            }
            return count;
        }

1 个答案:

答案 0 :(得分:0)

算法是:

  1. 如果N可以除以3:除以3。
  2. 如果N可以除以2:除以2.
  3. 减1。
  4. 您为N = 10运行的步骤是:

    1. 10可除以2.除以2 => 5
    2. 5不能除以3或2.减1 => 4
    3. 4可以除以2.除以2 => 2
    4. 2可以除以2.除以2 => 2
    5. 需要4个步骤。

      如果您有兴趣获得最快的方法将N减少为1,而不仅仅是任何方式,那么您可能会对Breadth-first search算法感兴趣。