这个想法是在一个序列中找到数字。方程式图:
var pat = document.getElementById("pattern");
var nMax = 96;
for (var n = 2; n <= 96; n++) {
if (n != 96)
pat.innerHTML += 1000 * (999 - 10 * (n - 2))/(1000 - 10 * (n - 2)) + ", ";
else
pat.innerHTML += 1000 * (999 - 10 * (n - 2))/(1000 - 10 * (n - 2)) + ",…";
}
<body>
<p id="pattern"></p>
</body>
但问题是,pat.innerHTML并没有将所有以前的n个数相乘。这样做的目的是创建一个序列:
a (2 ) = 1000 *(999-10*(2-2))/(1000-10*(2-2)) a (3 ) = 1000 *(999-10*(2-2))/(1000-10*(2-2))*(999-10*(3-2))/(1000-10*(3-2)) a (4 ) = a (3 ) *(999-10*(2-2))*(999-10*(3-2))a(4)=a(3)* (999 - 10 *(2-2)))/(1000-10*(4-2))
等等。我该怎么做?(使用适当的数学表示法,请参见图中的公式。)
发布于 2020-02-29 21:31:18
听起来,您只需要跟踪保存上次迭代结果的持久性变量,并通过乘以当前迭代计算当前迭代的结果。序列从1000开始,因此将其作为初始结果:
var pat = document.getElementById("pattern");
let lastResult = 1000;
for (var n = 2; n <= 94; n++) {
const nextResult = lastResult * ((999 - 10 * (n - 2))/(1000 - 10 * (n - 2)))
pat.innerHTML += nextResult + '<br>';
lastResult = nextResult;
}
<body>
<p id="pattern"></p>
</body>
发布于 2020-02-29 21:55:36
最好的方法是制作辅助计算的方法。如果你放了另一个for循环,然后追加新的值,就像数学需要的一样。
/*
Formula
*/
function calcFactoriel(arg) {
var a = 0; // for numbers
var b = ""; // for string
for (var x = arg; x > 1; x--) {
if (a == 0) {
a = 1000 * (999 - 10 * (x - 2))/(1000 - 10 * (x - 2))
} else {
a *= 1000 * (999 - 10 * (x - 2))/(1000 - 10 * (x - 2))
}
b = "<div class='m' >" + a + " , </div> ";
}
return b;
}
var pat = document.getElementById("pattern");
var nMax = 96;
for (var n = 2; n <= nMax; n++) {
pat.innerHTML += calcFactoriel(n);
}
.m {
color: rgba(0,0,0,0.6);
background: #629552;
text-shadow: 2px 8px 6px rgba(0,0,0,0.2), 0px -5px 35px rgba(255,255,255,0.3);
}
<body>
<p id="pattern"></p>
</body>
https://stackoverflow.com/questions/60469743
复制相似问题