Co wyświetli program - funkcja rekurencyjna

2015-02-03 00:29
0

Mam takie zadanie napisać co wyświetli program, ale nie wychodzi mi ta sama liczba co pokazuje kompilator.

#include <stdio.h>

int funk(int tab[], int x, int start, int koniec)
{
    int srodek;
    srodek = (start + koniec) / 2;
    if(x == tab[srodek] || start > koniec)
    {
        return srodek;
    }
    if(x < tab[srodek])
    {
        tab[srodek] += 1;
        return funk(tab,x,srodek + 1,koniec);
    }
    else
    {
        tab[srodek] -= 2;
        return (funk(tab,x,srodek + 1,koniec));
    }
}
int main()
{
    int tab[20], k,m;
    for(k = 0;k<20;k=k+1)
    {
        tab[k] = 1;
    }
    m = -1;
    printf("%d\n",funk(tab, m, 0, 19));
    for(k=1;k<20;k=k+2)
    {
        printf("%d ",tab[k]);
    }
    return 0;
}

W funkcji funk wykonuję się ten drugi warunek if, dla mnie wychodzi coś takiego:

Na początku jest:

x = -1
start = 0
koniec = 19
srodek = 9

Po wywołaniu rekurencyjnym:

tab[9] = 1
s = 1
k = 9
sr = 5
tab[5] = 1
s = 2
k = 5
sr = 5

I dalej już nie ciągnę tego bo to nie ma sensu. Coś źle robię ?

dodanie znaczników <code class="c"> - @furious programming

edytowany 1x, ostatnio: furious programming, 2015-02-03 01:10

Pozostało 580 znaków

2015-02-03 00:33
2

Odpal debuggera i śledź krok po kroku.

Pozostało 580 znaków

2015-02-03 01:02
0

Jakbyś nie wiedział jak używać debuggera to http://www.cs.cmu.edu/~gilpin/tutorial/

Pozostało 580 znaków

2015-02-03 01:32
0

Może głupi problem, ale w code blockie nie ma debuggera, przynajmniej nie mogę go uruchomić albo robię to nieświadomie.

Ściągnij sobie paczkę od Qt (Qt + Qt Creator + mingw), wszystko działa "out of the box". Ewentualnie pogoogluj, Code::Blocks też musi mieć obsługę debuggera. - kq 2015-02-03 06:07
a czy devc++ nie ma od razu debuggera ? - nowicjusz35 2015-02-03 09:09
Co to jest "code blockie"? Jeśli chodzi o Code::Blocks to debuger działa od razu, tyle że trzeba zmienić profil budowanej aplikacji z Release na Debug (i skompilować). - vpiotr 2015-02-03 09:17
możesz powiedzieć, gdzie to się zmienia ? - nowicjusz35 2015-02-03 09:57
@nowicjusz35: wbrew pozorom Google doskonale radzi sobie z takimi pytaniami: https://www.google.com/search?q=code+blocks+debug - oszczędzisz sobie i innym czasu i nerwów i dostaniesz dobrą odpowiedź - jak widzisz są nawet filmiki. - kq 2015-02-03 10:38
gdy zaznaczę breakpointa to potem nie mogę wcisnąć startu bo jest na szaro jakby czegoś brakowało. - nowicjusz35 2015-02-03 10:57

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0