Как я могу реализовывать программу, чтобы складывать числа array, но с перекурсивной функцией?

Я очень запутан параметров, чтобы создавать arrays, указатели и перекурсивные функции, но должен создавать следующую программу в c ++: Разрабатывать функцию имени sum, что, ввиду указателя "a" я сообщаю, что он указывает на первое положение array целых чисел и целого числа "n" с длиной данного array, возвратило сумму всей Вашей стоимости посредством перекурсивной функции.

Далее разработай программу, которая читала бы целое число n, что представляет число стоимости, которая будет прочитана далее, и, далее прочитайте n стоимость, которую нужно хранить в array. В конце концов, покажи из-за экрана результат суммы всей стоимости array.

Пример Ввода 1

0

Пример Вывода 1

0

Пример Ввода 2

4 1 2 3 4

Пример Вывода 2

10

Основная структура программы эта:

#include <iostream>
#include <string>
using namespace std;
int sum(int a, int n);
int main(){
  int n=0;
  cin >> n;
}
int sum(int a, int n){


}
2
задан 28.12.2019, 02:00
1 ответ

Возврат может быть чем-то, очень осложненным в начале, но практика и постоянство программируя harГЎn, что эта виделась больше fГЎcil каждый раз.

В моем критерии podrГ, - чтобы говорить, что у возврата есть две важные части.

Базовый случай: , Который обычно является условной одной (if), которые показывают / возвращают конечную стоимость нашей funciГіn переиталик. В твоем случае например у тебя есть данные о вводе, где 0 - конечная стоимость твоего возврата.
Тело или возврат: Это может быть была самая сложная часть, уже здесь он, где мы должны делать призыв к нашей функции осуществляя логику, чтобы получать нашу цель. Призыв к вышеупомянутой функции с той же функции, они могут быть 1,2,3... и всех раз потребовала твоя проблема (когда-нибудь я использовал 8 в ACM).

Решение твоей проблемы

int sum(int a, int n){
    if(n==0){//caso base
        return 0;
    } 
    return sum(a,n-1)+a[n-1];//recursividad
}

Сейчас давайте анализировать:

Женил 1
n=0
в = []
, призванная к функции sum(a,n) => sum([],0)
ExplicaciГіn: n равен 0 вводит условную (базовый случай) if и возвращает 0
ConclusiГіn: функционирует правильно для случая 1

Случай 2 n=4
в = [2,4,1,3]//изменил только для примера
1er призыв к функции sum(a,n) => sum([2,4,1,3],4)
ExplicaciГіn: n=4 введи в компьютер в тело
возврати sum (в, n-1) +a [n-1], что равен в: sum ([2,4,1,3], 3) +a [3]
, который равен в: sum ([2,4,1,3], 3) + 3//здесь реализует другой призыв к той же функции 2-ые

, призванный к функции sum(a,n) => sum([1,2,3,4],3)
ExplicaciГіn: n=3 введи в компьютер в тело
возврати sum (в, n-1) +a [n-1], что равен в: sum ([2,4,1,3], 2) +a [2]
, который равен в: sum ([2,4,1,3], 2) + 1//здесь реализует другой призыв к той же функции 3-ьи

, призванный к функции sum(a,n) => sum([1,2,3,4],2)
ExplicaciГіn: n=2 введи в компьютер в тело
возврати sum (в, n-1) +a [n-1], что равен в: sum ([2,4,1,3], 1) +a [1]
, который равен в: sum ([2,4,1,3], 1) + 4//здесь реализует другой призыв к той же функции

4ta призыв к функции sum(a,n) => sum([1,2,3,4],1)
ExplicaciГіn: n=1 введи в компьютер в тело
возврати sum (в, n-1) +a [n-1], что равен в: sum ([2,4,1,3], 0) +a [0]
, который равен в: sum ([2,4,1,3], 0) + 2//здесь реализует другой призыв к той же функции

5ta призыв к функции sum(a,n) => sum([1,2,3,4],0)
ExplicaciГіn: n=0 введи в компьютер в базовый случай
возврати 0;//конец возврата

здесь, когда функция "реализует возврат", берет всю возвращенную стоимость и складывает их:

5ta=>**0**
4ta=> 0 + 2 = **2**
3ra=> 2 + 4 = **6**
2da=> 6 + 1 = **7**
1ra=> 7 + 3 = **10**//llegamos al resultado

Старался делать это самым понятным, я надеюсь, что он подает тебя.

4
ответ дан 29.12.2019, 09:10
  • 1
    Muchí пропасти спасибо за эту explicació n такая полная, потому что то, что интересует меня, не упражнение, а понимать концепции. – Javocho 28.12.2019, 04:05