每次函数调用后清除计数器:JavaScript递归函数

时间:2017-04-28 23:07:20

标签: javascript recursion parameters

我有一个与乘法持久性有关的问题的以下解决方案。但是,我需要在每次函数调用后擦除计数器。 我尝试过不同的return语句,计数器和数组。

在每个函数调用AND之后,我似乎无法清除计数器 得到正确的答案。它正在添加多个函数调用的所有答案。

function persistence(num, counter = 0) {
        if (num.toString().length != 1) {
            num = num.toString().split("").filter(Number).reduce((a, b) => a * b);
            persistence(num, ++counter);
        }
return counter;
}


persistence(999) // Answer should be 4.
persistence(25)// Answer should be 2 not 6 or 1.

这里的测试:

describe('Initial Tests', function () {
      Test.assertEquals(persistence(39),3);
      Test.assertEquals(persistence(4),0);
      Test.assertEquals(persistence(25),2);
      Test.assertEquals(persistence(999),4);
    });

2 个答案:

答案 0 :(得分:0)

您需要返回每个递归调用的结果并处理else情况。

试试这个:

> persistence(25)
< 2
> persistence(999)
< 4

以下是控制台的结果:

selector: '[sponsor-tile]'

答案 1 :(得分:0)

我假设您正在尝试计算multiplicative digital root,但会从计算中删除零,因为您正在使用{{1} } 以上。下面,我们编写.filter(Number),它返回将数字减少到一位数所需步骤的数组

最后,multiplicative persistence可以通过简单计算multiplicativeRoot的返回值中的步数并减去multiplicativeRoot来计算(结果中的第一个值始终是输入值) )

结果是1的实现,由几个函数组成,每个函数都有明确的目的

&#13;
&#13;
multiplicativePersistence
&#13;
&#13;
&#13;