举例:
10=23+21
12=23+22
14=23+22+21
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div style="position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%);width: 400px;height: 400px;">
<label for="">
请输入数字
<input id="num" type="text">
<span id="tip"></span>
</label>
<div>
<button id="calc">计算</button>
</div>
<div>
结果是:<span id="result"></span>
</div>
</div>
<script>
document.getElementById("calc").addEventListener("click",function(){
document.getElementById("tip").innerText = "";
let num = document.getElementById("num").value;
getResult(num);
})
function getResult(arg){
var pattern = /^\d+$/g;
if(!pattern.test(arg)){
document.getElementById("tip").innerText = "请输入正整数";
return;
}
let argNum = parseInt(arg);
if(argNum%2 !== 0){
document.getElementById("tip").innerText = "请输入偶数";
return;
}
let arr = [];
getRes(argNum,arr);
let html = '';
arr.forEach((item,index)=>{
if(index === arr.length - 1){
html += `2<sup>${item}</sup>`;
}else{
html += `2<sup>${item}</sup>+`;
}
})
document.getElementById("result").innerHTML = html;
}
function getRes(arg,arr){
let count = getCount(arg);
let res = arg - Math.pow(2,count);
arr.push(count);
if(res > 0){
getRes(res,arr);
}
}
function getCount(arg){
let count = 0;
return get(arg,count);
}
function get(arg,count){
let argNew = arg/2;
if(argNew >= 1){
count++;
count = get(argNew,count)
}
return count;
}
</script>
</body>
</html>