2017-07-25 5 views
1

Dies ist mein Code zu prüfen, angegebene Nummer ist ein Happy number. Ich denke, ich versuche falsche Logik.Überprüfen Sie, ob die angegebene Nummer glücklich ist oder nicht

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") 
 
}

Bitte korrigieren Sie mich, richtiges Ergebnis zu bekommen.

+0

Logic ist nicht korrekt. Berechne num mit der Funktion mod (%). – Amit

+0

bitte dieses https://gist.github.com/xk/8918502 –

+1

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

Antwort

1

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

Wenn ich verstehe, was glücklich Zahl ist, sollte dies korrekt sein.

$(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

Kleine Korrektur in Ihrem Code: Setzen Sie 'if-else' Bedingung außerhalb der 'for() Schleife' . – krish

+0

@krish danke ich habe den Code aufgeräumt. –

0

Ich fürchte, Sie die Bedingung sind Verlesen: es sollte zunächst einmal prüfen für die endgültige Anzahl === 1 zu sein.

Und Sie sollten mit nur einer Iteration nicht gehen, aber bis Sie gehen entweder auf 1 erreichen oder auf eine bereits analysiert Zahl entsprechen. Ich würde empfehlen, einen Hash zu verwenden, um die bereits seen Zahlen zu verfolgen.

einfach nicht einige Hausaufgaben kostenlos, ein schönes Beispiel mit Rekursion here zu tun.

1

wikipedia Nach

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

I rekursive Funktion isHappy erstellt, auf die wir unsere Nummer, passieren so
auf das Konto unter Glückliche Nr Definition und dass Javascript Uncaught Auslöser Range trow wird: Maximale Call-Stack-Größe überschritten, wenn wir endlos Schleife werden wir setzen Funktion in versuchen ... fangen Block, So ist hier Schluss Code

//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') 
    } 
Verwandte Themen