Первое что нужно - это определиться с условием окончания рекурсии. В данном случае можно проверить индекс массива на 0, т.е. если это 1й элемент массива, то сумма на данный момент ещё равна 0 и функция должна просто вернуть значение 1-го элемента, иначе - сумму этого и предыдущего элемента
Код: Выделить всё
int sum(int * a, int index)
{
return index==0? *a:*(a+index)+sum(a,index-1);
}
int main()
{
const int n=10;
int A[n]={1,2,3,4,5,6,7,8,9,11};
cout<<sum(A,n-1)<<endl;
return 0;
}
Вызов функции начинаем с последнего элемента, стек вызовов разрастается, пока не будет вызвана ф
-ция с index равным 0, далее будет последовательно формироваться сумма.
Либо вариант без индексов
Код: Выделить всё
int sum(const int *const pFirst, const int *pLast)
{
return pLast==pFirst? *pLast:*pLast+sum(pFirst,pLast-1);
}
//......
// вызов делаем так
sum(A,A+n-1);
//........