Jak działa prosta funkcja

Jak działa prosta funkcja
TA
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 4 lata
  • Postów:37
0

Witam może mi ktoś wyjaśnić jak to działa że wynikiem jest 2? Bo na logikę wynikiem powinno być 6... Napisałem to ale nie rozumiem jak to działa:/ Wejście to 11.

Kopiuj
#include <iostream>

using namespace std;

int x;
int licz(int x)
{
    int w=0;
    if(x==1)
    {
        return 1;
    }
    else
    {
        w=licz(x/2);
        if(x%2==1)
        {
            return w+1;
        }
        else
        {
            return w-1;
        }
    }
}

int main()
{
    cin>>x;
    cout<<licz(x);
    return 0;
}
edytowany 1x, ostatnio: TenAnonim
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
2
Kopiuj
licz(11):
    x = 11
    w = licz(5)

licz(5):
    x = 5
    w = licz(2)

licz(2):
    x = 2
    w = licz(1)

licz(1):
    return 1

licz(2):
    x = 2
    w = licz(1) = 1
    return 1 - 1

licz(5):
    x = 5
    w = licz(2) = 0
    return 0 + 1

licz(11):
    x = 11
    w = licz(5) = 1
    return 1 + 1

stąd: licz(11) = 2

ew. w wersji z wcięciami:

Kopiuj
licz(11):
    x = 11
    w = licz(5)

    licz(5):
        x = 5
        w = licz(2)

        licz(2):
            x = 2
            w = licz(1)

            licz(1):
                return 1

        ... return 1 - 1

    ... return 0 + 1

... return 1 + 1

stąd: licz(11) = 2

edytowany 1x, ostatnio: Patryk27
TA
Ok dzieki wszystko jasne

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.