Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过同时计算数字来找到数组的平均值_Javascript_Arrays_Algorithm_Math - Fatal编程技术网

Javascript 如何通过同时计算数字来找到数组的平均值

Javascript 如何通过同时计算数字来找到数组的平均值,javascript,arrays,algorithm,math,Javascript,Arrays,Algorithm,Math,对不起,我想问一个问题,它现在正困扰着我。我认为这是一个非常简单的问题。但我不知道怎么解决它。也许你们都知道这件事 这个问题是这样一个数组[3,4,5],答案是5 得到答案的算法是这样做的 (每个十进制数将四舍五入到下一个最大整数) 所以我们得到的答案是5 对于其他问题,如[8,1,8,8,0]输出将为7 如果有人知道如何解决这个问题,我使用javascript来实现这个算法 但是仍然找不到解决这个问题的方法 每一个帮助都会很好 谢谢您可以迭代长度大于1的整个文件,并映射一个较小数组的新数

对不起,我想问一个问题,它现在正困扰着我。我认为这是一个非常简单的问题。但我不知道怎么解决它。也许你们都知道这件事

这个问题是这样一个数组
[3,4,5]
,答案是5

得到答案的算法是这样做的

(每个十进制数将四舍五入到下一个最大整数)

所以我们得到的答案是5


对于其他问题,如
[8,1,8,8,0]
输出将为7

如果有人知道如何解决这个问题,我使用javascript来实现这个算法

但是仍然找不到解决这个问题的方法

每一个帮助都会很好


谢谢

您可以迭代长度大于1的整个文件,并映射一个较小数组的新数组

let数组=[8,1,8,8,0];
log(…数组);
while(array.length>1){
设l=数组[0]
array=array.slice(1.map)(r=>{
设v=Math.ceil((l+r)/2);
l=r;
返回v;
});
log(…数组);

}
您可以迭代一个数组并继续计算,直到数组中只有一个项为止。您可以执行以下操作:

const getAverageForEachPair=(arr)=>{
如果(arr.length==1){
返回arr;
}否则{
设res=[];
for(设i=0;i1){
让line1='';
arr.forEach(项目=>{
第1行+=(项目+'');
});
让line2='';
console.log(第1行);
arr=getAverageForEachPair(arr);
arr.forEach(项目=>{
第2行+='\\/';
});
控制台日志(第2行);
}

控制台日志(“”+arr[0])请注意,始终向上舍入到下一个整数会引入偏差。上下交替会产生更好的效果。这项练习的目的是什么?这是相当低效的,O(n^2)。两个循环可以很容易地解决这个问题。我想问题是我们是如何添加
Math的。ceil((3+4)/2)=4
将与
Math一起添加。ceil((4+5)/2)=5
因此它将打印
Math.ceil((4+5)/2)
精确地使用
5
values@Damien你说两圈是什么意思。我们是如何得到的?第一个循环对应于新数组的大小
new_size
(从n-1到1),第二个循环对应于索引
i
从0到
new_size-1
arr[i]=(arr[i]+arr[i+1])/2
(为了简单起见,我省略了
ceil
)。谢谢@sabbir.alam,这是一个很好的答案,实际上我只得到了最后一个值。但是你建立了伟大的可视化。谢谢