2017-07-25 10 views
1

これは私のコードはHappy numberです確認するためのコードです。私は間違った論理をしようとしていると思う。与えられた数字が満足しているかどうかを確認してください

var num = 5239; 
 
var sum = 0; 
 
while (num > 0) { 
 
    sum += Math.pow(num % 10, 2); 
 
    num = Math.floor(num/10); 
 
    console.log(num) 
 
} 
 
console.log(sum); 
 
if (num == 0) { 
 
    alert("happy number") 
 
} else { 
 
    alert("Not happy number") 
 
}

正しい結果を得るために私を修正してください。

+0

論理が正しくありません。 mod(%)関数を使用してnumを計算します。 – Amit

+0

この1つをお待ちくださいhttps://gist.github.com/xk/8918502 –

+1

ここ:http://www.w3resource.com/javascript-exercises/javascript-conditional-statements-and-loops-exercise-8.php –

答えて

1

https://jsfiddle.net/g18tsjjx/1/

iは幸せ何番目理解している場合、これは正しいはずです。

$(document).ready(function() { 
    var num = 1; 
    var i = 0; 
    for (i; i < 10000; i++) { 
    num = newNumber(num); 
    } 
    num == 1 ? alert("it's happy number") : alert("it's not happy number"); 
}); 

function newNumber(num) { 
    var sum = 0; 
    var temp = 0; 
    while (num != 0) { 
    temp = num % 10; 
    num = (num - temp)/10; 
    sum += temp * temp; 
    } 
    return sum; 
} 
+0

あなたのコードに小さな修正があります: 'for-else'条件を' for()loop'の外に置きます。 。 – krish

+0

@krishありがとう私はコードを整理しました。 –

0

私はあなたが条件を誤読している恐れ:それはまず第一に=== 1ている最終的な数を確認する必要があります。

繰り返しを進めるのではなく、1に達するか、既に解析された数に達するまで続行してください。すでにseenの番号を追跡するためにハッシュを使用することをお勧めします。

ちょっと無料で宿題をやってはいけません。再帰のあるいい例はhereです。

1

は、ウィキペディア

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number either equals 1 (where it will stay), or it loops endlessly in a cycle that does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers (or sad numbers). wikipedia Happy number

によると、私たちはそう
アカウントハッピーナンバー定義を考慮して、JavaScriptを捕捉されない例外RangeErrorをトロウになることを、私たちのを渡しますしている再帰関数isHappyを作成しました:最大呼び出しスタックサイズがを超えました。私たちは無限にループするときに、の中に関数を入れます... catchブロック、最終コード

//Our Recursive Function 
function isHappy(number){ 

    var output = [], 
    sNumber = number.toString(); 

for (var i = 0, len = sNumber.length; i < len; i += 1) { 

    output.push(+sNumber.charAt(i));//converting into number 

    } 
    var sum=0; 

for(var i=0;i<output.length;i++){ 
    sum+=Math.pow(output[i],2); 
    } 

if(sum!==1){ 
    isHappy(sum); 

    } 

} 



try{ 
     isHappy(number);//call the function with given number 
     alert('happy') 

    }catch(err){ 
    alert('unhappy') 
    } 
関連する問題