• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sumowanie tablicy , rekurencyjnie wyłączając w każdym kroku środkowy element.

Object Storage Arubacloud
0 głosów
345 wizyt
pytanie zadane 2 listopada 2016 w C i C++ przez mistrzuniu1 Użytkownik (600 p.)

Moim zadaniem jest obliczenie sumy wartości w tablicy rekurencyjnie, w taki sposob, że wybieram wyraz środkowy i dziele tablice na 2 prawie rowne częsci i tak w kólko 

Udało mi się to zrobić w ten sposób:

http://ideone.com/GTuUZy

Wiem jednak, że to nie jest typowa rekurencja, jak zmodfyfikować program, by była to typowa rekurencja?(tzn. kolejne wywołania w return)

#include <iostream>

using namespace std;
int suma(int *tab,int rozmiar)
{
    int podziel = rozmiar/2;
    if (rozmiar==0) return 0;
    if (rozmiar==1) return tab[0];
    static int razem;
    razem+=tab[podziel];
    for (int i=podziel; i<rozmiar-1; i++)
       {
          tab[i]=tab[i+1];
       }

            return tab[podziel]+suma(tab, rozmiar-1);


}
int main()
{
    int tab[10]={1,2,3,4,5,6,7,8,9,10};
    cout << suma(tab, 4) << endl;
    return 0;
}

 

Zauważyłem rownież, że dla rozmiarów

-3  mam wynik 7 zamist 6

-4 wynik 13 zamiast 9

Mogę sie więc domyślać, że zamiast ostatniego elementu dodaje mi się element, który został "obcięty" jako pierwszy tzn dla 3 mam (2+3+2 zamiast 2+3+1), a dla 4 (3+2+4+4 zamiast 3+2+4+1).

Pomocy! :)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 193 wizyt
0 głosów
1 odpowiedź 290 wizyt
0 głosów
2 odpowiedzi 755 wizyt
pytanie zadane 11 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...