У меня есть программа, в которой она запрашивает размер массива, который хочет пользователь, и вставляет числа в массив, начиная с 1 и заканчивая номером массива. Затем он запросит у пользователя другое число между номером массива и рекурсивно суммирует все числа от 1 до этого числа.
Что я пытаюсь получить
Пожалуйста, введите число: 7 Размер массива, который вы выбрали, равен 7
1
2
3
4
5
6
7
Пожалуйста, введите число в массив для суммирования от 1: 4
сумма чисел от 1 до 4 равна 10
Что я получаю
сумма чисел от 1 до 4 равна 17
по какой-то причине он дает мне 17 вместо 10, пожалуйста, помогите.
#include <iostream>
using namespace std;
#include <assert.h>
int compute(const int A[], int n)
{
if (n< 0)
{
return 0;
}
else
{
return A[n] + compute(A, n-1);
}
}
int main()
{
int number;
cout << "Please enter a number of a size that "<<
"you want your array that is between 1 and 100: ";
cin >> number;
int A[number];//size of array
assert(number >= 0 && "Error: Number cannot be less than 0.");
assert(number <= 100 && "Error: Number cannot be greater than 100.");
int input;// the numbers put into the array
cout<< "The array size that you have chosen is "<< number<<endl;
for(int i = 1; i < number+1; i++)
{
A[i] = i;
cout <<A[i]<< endl;
}
int sum;
cout<< "Please choose a number to sum up: ";
cin >> sum;
cout<<"The sum of the numbers 1 to " << sum << " is " <<compute(A, sum)<<endl;
}