首先第一步,我们的明确这个数字是不是三位数。所以先做一个判断:
// 获取数字位数 functiondigits(num){returnnum.toString().length}if(digits(n)!==3){log('请输入一个三位数!')}// 简化控制台输出 functionlog(String){console.log(String)}
第二步,看看这三个位数上的数是否不全相等。
// 百位 varh=parseInt(n/100);// 十位 vart=parseInt(n/10%10);// 个位 vars=parseInt(n%10);//如果个位、十位、百位上的数全都相等,输出此数,程序返回 if(isEquals(h,t,s)){log(n)returnn}
第三步,将数字排序并做减法。
vararr=[s,t,h];arr.sort(function(a,b){returna-b})varresult=(arr[2]*100+arr[1]*10+arr[0])-(arr[0]*100+arr[1]*10+arr[2]);
最后给出完整代码,数字前自动补0的函数在下面卡片里。
// 计算三位数数字黑洞 functionblackHole(n){if(digits(n)!==3){log('请输入一个三位数!')}else{// 百位 varh=parseInt(n/100);// 十位 vart=parseInt(n/10%10);// 个位 vars=parseInt(n%10);if(isEquals(h,t,s)){log(n)returnn}else{vararr=[s,t,h];arr.sort(function(a,b){returna-b})varresult=(arr[2]*100+arr[1]*10+arr[0])-(arr[0]*100+arr[1]*10+arr[2]);//如果输入的数等于经过计算的数,说明找到了三位数的数学黑洞,程序结束 if(n===result){return}else{//否则接着寻找,并输出此计算后的结果,保证此数为三位数,如不足,数字前补0 log(preFixInteger(result,3))returnblackHole(result)}}}}