我試圖解決這個問題:程序爲何給我這個消息:「程序停止運行時間過長」
的81號有一個特殊的財產, 總和的一定的權力其數字等於81(9平方)。八十一(81),是具有此屬性的 第一個數字(不考慮一個 數字的數字)。下一個,是512讓我們來看看這兩種情況下與細節
8 + 1 = 9 and 9^2 = 81 512 = 5 + 1 + 2 = 8 and 8^3 = 512
我們需要的功能,power_sumDigTerm()
,接收數字n,並且可以輸出n-th
項數的序列中。我們上面介紹的情況意味着: 所以我已經解決了如下問題;
function findPow(sum,i) {
var counter = 0;
while (true) {
counter++;
if (Math.pow(sum,counter) === i) {
return true;
} else if (Math.pow(sum,counter) > i) {
return false;
}
}
}
function powerSumDigTerm(n) {
var index = 80;
var result = [];
function loop() {
index++;
var sum = 0;
var string = index.toString();
for (var i =0;i<string.length;i++) {
sum += Number(string[i]);
}
if (findPow(sum,index)) {
result.push(index);
}
return (n === result.length) ? result[n-1] : loop()
}
return loop()
}
這裏的問題是,當我跑的功能,並通過在1 powerSumDigTerm(1)
。預期產量將爲81。但是,如果我們傳入2 console.log(powerSumDigTerm(2))
,函數會返回一條消息:Program halted for running too long, sorry!
有沒有人有任何解釋爲什麼函數會這樣做?以及如何避免它?
有一個在你的編程logir故障從未走出while循環。您需要修復IF子句。 –
你的意思是在findPow函數中嗎? –