首页 > 解决方案 > 打印数字的幂并将它们加在一起

问题描述

function obliczTo() {
  var bet = document.forms["oblicz"]["bet"].value;
  var kol = document.forms["oblicz"]["kolejki"].value;

  var bankRoll = bet * Math.pow(2.1, kol)
  document.write('Potrzebujesz: ' + Math.ceil(bankRoll))
}
<form name="oblicz" onsubmit="return obliczTo()" method="post" required>
  Bet: <input type="text" name="bet"> Ile kolejek: <input type="text" name="kolejki">
  <input type="submit" value="Submit">
</form>

我想打印 html 中的每一个权力并将它们加在一起并将其打印为 bankRoll。例如

bet = 10
kol = 5

在 html 中:

21
44.1
92.61
194.481
408.4101

Bank Roll: 760.6011

我想打印每个单独的输出并将它们的累积总和显示为“银行卷”。

标签: javascripthtml

解决方案


通过使用几何级数求和公式,您可以简化算法,直接计算任何级数的总和,而无需逐步执行各个求幂步骤:

其中S是总和,a是起始金额,q是因子和n最高指数。我在这里稍微修改了公式:我从中减去了初始金额a,因为您似乎不希望它包含在总和中。所以你最终得到了这个修改后的求和公式:

const geomSum=([a,q,n])=>// (a*(q**(n+1)-1)/(q-1)-a).toFixed((n||6)-1),
                            (a*(q**(n+1)-q)/(q-1)  ).toFixed((n||6)-1),
      res=document.getElementById('res'),
      v=[].slice.call(document.querySelectorAll('input'));
function calc(){res.textContent=geomSum(v.map(e=>+e.value));}
document.querySelector('form').oninput=calc;
calc();
<form>
 <input name="a" placeholder="start value" value="10"><br>
 <input type="number" name="q" placeholder="factor" value="2.1"><br>
 <input type="number" name="n" placeholder="exponent" value="5">
</form><br><br>
<div id="res"></div>


推荐阅读