题目
输入数字n,按顺序打印从1到最大的n位十进制数。
输入一个3,则需要打印出0~999;输入一个4,则需要打印出0~9999
核心
n没有限制,如果不小心给成无穷大,如何处理。n的数值类型,所以采用字符串方式进行全排列
function showNum(){ var num = parseInt(document.getElementById("nLength").value); if (num <=0) return ; number ={}; printOrder(number,num,0) } function printOrder(number, n, loc){ if(loc == n) return; for(var i = 0; i <= 9; i++){ number[loc] = ('' + i); if(loc == n - 1){ printNumber(number); } printOrder(number,n,loc + 1); } } function printNumber(num){ var arr = Object.values(num); var size = arr.length; var i = 0; while(i < size && num[i] == '0') //i < size在前,否则越界 i++; if(i == size)// return; console.log(parseInt(arr.join("")))//打印的地方,即为全部的数字 }
代码暂时没有详解,具体实现,请查看git页面(html打开即可实现)
https://github.com/Kristen-D/Algorithms/tree/master/algorithm/digitMaxnum