performance - Javascript program running for ever in all browser -


i have below code generate permutation of given number. problem if try generate permutation above 5 digit running ever. how optimize program result displayed in browser.

<html> <script>    function permute(level,  permuted, used,  original) {     var length = original.length;     if (level == length) {         //system.out.println(permuted);         document.getelementbyid("nmbrs").innerhtml = document.getelementbyid("nmbrs").innerhtml + "<br />" +permuted     } else {             (var = 0; < length; i++) {                 if (!used[i]) {                     used[i] = true;                     permute(level + 1, permuted + original[i],                        used, original);                     used[i] = false;                 }             }         }     }    function executep(){     var s = ['0','1','2','7'];     document.getelementbyid("nmbrs").innerhtml = "";     var length = eval(document.getelementbyid("num").value);      /*for(var i=length-1;i>=0;i--){         var used = [false, false, false, false];         permute(i, "", used, s);     }*/      var newarray = ['0','1','2','7'];     if(length > 4){          var newite = length - 4;         do{             newarray.push(s[(newite-1) % 4]);             newite--;         }while(newite>0);     }      var used = [false, false, false, false,false, false, false, false,false, false, false, false];     permute(newarray.length-length, "", used, newarray);  }   </script> <body> <input type="text" id="num" /> <input type="button" value="generate num" onclick="executep()" />  <div id="nmbrs" ></div> </body> </html> 

your primary problem you're manipulating dom, expensive. instead, store results in temporary location, , generate html want use, , append dom.

this modified version of page / script shows mean, , generates permutations of length 8+ easily;

<html> <script> var results = [];  function permute(level, permuted, used, original) {     var length = original.length;     if (level == length) {         results.push(permuted);     } else {             (var = 0; < length; i++) {                 if (!used[i]) {                     used[i] = true;                     permute(level + 1, permuted + original[i],                        used, original);                     used[i] = false;                 }             }     } }  function executep(){     var s = ['0','1','2','7'];     document.getelementbyid("nmbrs").innerhtml = "";     var length = eval(document.getelementbyid("num").value);      var newarray = ['0','1','2','7'];     if(length > 4) {          var newite = length - 4;         {             newarray.push(s[(newite-1) % 4]);             newite--;         } while (newite>0);     }      var used = [false, false, false, false,false, false, false, false,false, false, false, false];     permute(newarray.length-length, "", used, newarray);     var resulthtml = "";     var resultlength = results.length;     (var = 0; < resultlength; i++) {         resulthtml += results[i];         resulthtml += "<br/>";     }     document.getelementbyid("nmbrs").innerhtml = resulthtml; }  </script> <body> <input type="text" id="num" /> <input type="button" value="generate num" onclick="executep()" /> <div id="nmbrs" ></div> </body> </html> 

Comments

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -