Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

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

$
0
0

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! :)


Viewing all articles
Browse latest Browse all 21942

Trending Articles


AutoMapa 6.27.0 ( 2301 ) Polska / Europe Finał ( PC_WinCE ) Cracked


Sprawdź z którą postacią z anime dzielisz urodziny


H. H. Schild - MRI Zrozumieć Rezonans Magnetyczny [PDF] [DJVU] [PL]


Alawar Keygen POLECAM


Kombajn ziemniaczany GRIMME HLS 750


POTANIACZ


Antena kierunkowa 2 el. Delta 7 pasm wg. SP3PL


1


Renault Laguna III - kontrolki (P) oraz /check handbrake


C4 Picasso 2011 - błąd U1218