Interpretacja kodu

0

Witam, mógłby ktoś wyjaśnić jak otrzymany został wynik w tym programie
WYNIK 10,8,6,4,3,5,3,27

#include <stdio.h>
int F(int x)
{
 int w = x;
 printf("%d ",x+1);
 if (x>3)
 {
 w+=F(x-2);
 x--;
 }
 if (x>4)
 w+=F(x-4);
 else
 w-=1;
 return w;
}
int main()
{
 printf("%d ", F(9));
 return 0;
}
0

Otrzymany został niechybnie w wyniku wykonania podanych instrukcji.

2

Jakbyś napisał czego nie rozumiesz byłoby łatwiej :)

Prawdopodobnie nie spotkałeś się z rekurencją?
Rekurencja to wywoływanie funkcji przez tę samą funkcję.

Innymi słowy, w main wywołujesz funkcję F dla wartości 9.
Spełniony jest warunek if (x>3) stąd wywołujesz jeszcze raz tą funkcję ale dla 9-2 czyli 7, tu znowu spełniony jest warunek if (x>3) więc wywołujesz jeszcze raz tlyko tym razem dla 5-2 czyli 3 itd

0

Debugger powie Ci wszystko. Warto zainwestować trochę czasu i zapoznać się np. z gdb, to podstawa i od tego nie uciekniesz (chyba, że uciekniesz od programowania).

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