Javascript 如何创建复合数值变量等于指定值的公式?
如果你点击这篇文章,我知道这个问题有点不清楚。所以我必须让你明白我的意思Javascript 如何创建复合数值变量等于指定值的公式?,javascript,Javascript,如果你点击这篇文章,我知道这个问题有点不清楚。所以我必须让你明白我的意思 var value = 30; var num = 1; var total = 0; while(num < 10){ total +=num; num++; } if(total == value){ console.log("They are equivalent"); } var值=30; var-num=1; var合计=0; while(num考虑变量值< /强>, num < /强>, toTA
var value = 30;
var num = 1;
var total = 0;
while(num < 10){
total +=num;
num++;
}
if(total == value){
console.log("They are equivalent");
}
var值=30;
var-num=1;
var合计=0;
while(num<10){
总数+=num;
num++;
}
如果(总==值){
console.log(“它们是等效的”);
}
< >考虑变量<强>值< /强>,<强> num < /强>,<强> toTA/强> L。当num小于10时,指定的值。我希望它将num值添加到total中,但在循环结束时,我希望total和value相等。我只是不知道该怎么做,也不知道我需要创建什么公式才能做到这一点。你的计算结果不会给你30,如果你希望精确的合成方法在9次迭代后等于这个值,那么使用
var value =36;
这是因为
1+2+3+4+5+6+7+8 =36;
这种计算方法永远不会给你30你的循环是计算算术级数的和,也称为an,从1开始,公差为1。数学上,级数为: 总数为:
在我看来,您似乎想要计算所需的n值(
num
,在代码中)作为Sn之和的预先指定值(value
,在代码中)。我们可以通过求解上述n的求和方程来实现这一点
我们可以从以下方面重新安排:
这是一个很好的例子。插入:
下面是一个使用的上述结果的演示 首先,为了演示求和公式:
calcTotal <- function(num) num*(num+1L)/2L;
calcTotal(1:20);
## [1] 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190 210
首先,注意选择负数总是导致负数。因为我们只对积极的结果感兴趣,所以我们可以忽略这个专栏
其次,请注意加号的选择总是导致正数,但其中许多是非整数。这是有意义的,因为算术序列并不是所有可能的整数总和。对于满足级数整数基的总计,函数将返回正确的整数结果
我们可以使用自定义函数进行适当的浮点比较,将积分结果子集如下:
feq <- function(a,b,TOL=max(a,b)*1e-12) if (is.infinite(a) || is.infinite(b)) a==b else abs(a-b)<=TOL;
res[feq(res[,'+'],round(res[,'+'])),];
## total + -
## [1,] 1 1 -2
## [2,] 3 2 -3
## [3,] 6 3 -4
## [4,] 10 4 -5
## [5,] 15 5 -6
## [6,] 21 6 -7
## [7,] 28 7 -8
## [8,] 36 8 -9
这意味着我们需要对循环进行7.262087次迭代,以获得30的总值。当然,这是不可能的。基本上你需要一个因素来增加你的价值 如果你只需要加上计数器,它从1到9,求和的公式是 你知道总数,你得到45分,那是非常多的。要获得正确的总和,您需要在添加之前乘以系数
num
。这只是我们的分工
wanted result / actual result = factor
30 / 45 = 2 / 3 = 0.6666666666666667
这个因子可以在迭代中使用
为了准确起见,我建议使用等效分数
var值=30,
num=1,
总数=0;
while(num<10){
总计+=num*2/3;//应用系数
console.log(num,total);
num++;
}
如果(总计===值){
console.log(“它们是等效的”);
}
1+2+3+4+5+6+7=28
和1+2+3+4+5+6+7+8=36
,这是怎么回事呢?我想你关注的是数字的值,而不是我说的,让我换一种方式说吧。如果num的值已循环10次以上,如何使其等于变量值。该值是30、50还是1000。我需要做什么公式才能使num value等于变量值,当它循环10次以上时我想如果你给我们举几个例子会有所帮助。给我们一个函数输入,它应该输出什么。while循环中允许发生什么?循环中的num
是否可以大于10?num
是否必须在每个循环周期中增加1?等如果你想1+2+3+4+5+7+8=30
并且你想num
在循环中增长,你需要使用回溯,否则如果num
允许从9向后变为0,你可以使用贪婪累加器。这已经在我的评论(上面)中提到过,他澄清说这不是他想要的。当我回复我的手机应用程序没有刷新时,我猜,
calcNum(30);
## total + -
## [1,] 30 7.262087 -8.262087
sum = n * (n + 1) / 2
wanted result / actual result = factor
30 / 45 = 2 / 3 = 0.6666666666666667