gpt4 book ai didi

c++ - 将数组的值成对求和,直到最终得到所有值的总和

转载 作者:行者123 更新时间:2023-11-28 00:02:54 24 4
gpt4 key购买 nike

所以我需要对元素进行求和,如果数组中有 12 个值([1]、[2]、[3]...[12]),它必须显示 6 个结果然后求和再次成对,最终显示整个数组的结果。

看起来它必须是递归的并且成对地对数组中的每个值求和。

我不知道如何实现它,请帮助。

#include "stdafx.h"
#include <conio.h>
#include <stdlib.h>
#include <ctime>
#include <iostream>
using namespace std;



int sum(int array[], int size);

int main()
{
cout << "Size of Array: "; int size; cin >> size;
int *array = new int[size], Max = 100;

srand(time(NULL));
//Inputing array.
cout << "Enter elements of array followed by spaces: ";
for (int i = 0; i < size; i++)
{
array[i] = (int)(rand() % Max);
}

for (int i = 0; i < size; i++)
{
cout << array[i] << "\t";
}

cout << "Sum of elements of array: " << sum(array, size) << endl;

return 0;
}

//Function.
int sum(int array[], int counter)
{
if (counter == 1)
return array[0];
else
{
return array[0] + sum(array + 1, counter - 1);
}
}

最佳答案

显然,这是作业,所以我不会在这里给出解决方案,只是提示如何实现。

此处的递归是对相邻的数组元素对求和,从而产生一个新数组,其大小是原始数组的一半。重复该过程,直到大小为1,得到总和。

这可以通过就地工作来实现,即没有多个阵列。工作马函数的签名可能如下所示:

int                   // return: size of array on output
sum_pairs(int*array, // in/out: array, on output sum of pairs
int size) // input: size of array on input
{
if(size<=1) return size;
int out_size = (size+1)/2;
// your code here
return out_size;
}

那么最后的工作就很简单了

int sum_of_array(int*array, int size)
{
size = sum_pairs(array,size);
return size<=1? array[0] : sum_of_array(array,size); // recursive call
}

在没有递归的情况下这样做实际上更容易:

int sum_of_array(int*array, int size)
{
while(1 < size=sum_pairs(array,size)) ;
return array[0];
}

关于c++ - 将数组的值成对求和,直到最终得到所有值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37609280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com