我试图将数字提升到他们的连续权力,我的代码不起作用

时间:2017-07-28 15:37:23

标签: javascript

https://codepen.io/aholston/pen/ZJbrjd

codepen链接注释了代码以及HTML中的实际指令

否则....我最终要做的是编写一个函数,它接受两个参数(a和b)并获取这两个参数之间的所有数字(ab)并将每个数字添加到连续的fowers并将该数字等于一个新数组。例:89 = 8 ^ 1 + 9 ^ 2 = 89或135 = 1 ^ 1 + 3 ^ 2 + 5 ^ 3 = 135

function sumDigPow(a, b) {
    // Your code here
    var numbers = [];
    var checkNum = [];
    var finalNum = [];
    var total = 0;
    for (var i = 1; i <= b; i++) {
        if (i >= a && i <= b) {
            numbers.push(i);
        }
    }

    for (var x = 0; x < numbers.length; x++) {
        var checkNum = numbers[x].toString().split('');
        if (checkNum.length == 1) {
            var together = parseInt(checkNum);
            finalNum.push(together);
        } else if (checkNum.length > 1) {
            var together = checkNum.join('');
            var togNumber = parseInt(together);

            for (var y = checkNum.length; y > 0; y--) {
                total += Math.pow(checkNum[y - 1], y);
            }
            if (total == togNumber) {
                finalNum.push(togNumber);
            }

        }
    }
    return finalNum;
}

2 个答案:

答案 0 :(得分:0)

试试这个:

function listnum(a, b) {
  var finalNum = [];
  for (var i = a; i <= b; i++) {
    var x = i;
    var y = i;
    var tot = 0;
    j = i.toString().length;
    while (y) {
      tot += Math.pow((y%10), j--);
      y = Math.floor(y/10);
    }
    if (tot == x)
    finalNum.push(i);
  }
  return finalNum;
}
console.log(listnum(1, 200));

答案 1 :(得分:0)

好的,调试后这就是我学到的。

          for (var y = checkNum.length; y > 0; y--) {
            total += Math.pow(checkNum[y - 1], y);
        }
        if (total == togNumber) {
            finalNum.push(togNumber);
        }

    }
}
return finalNum;

}

每次这个循环发生时,我都忽略了重置“总数”。变量回到0.所以我从来没有得到我的Math.pow()的正确答案,因为我的答案总是添加到以前的总值。为了解决这个问题,我添加了var total = 0;在我决定是否推动&#39; togNumber&#39;进入&#39; finalNum。&#39;所以我的代码看起来像这样..

for (var y = checkNum.length; y > 0; y--) {
total += Math.pow(checkNum[y - 1], y);


}
if (total == togNumber) { 


finalNum.push(togNumber);}

}
  var total = 0;
}
return finalNum;

 }