rekursive funktion

thespecialx

Mitglied
hallo, bin ein totaler neuling in sachen java und programieren...

int bitsGesetzt(int n)
{
int r = 0;
while (n > 0)
{
if (n % 2 != 0)
{
r++;
}
n = n / 2;
}
return r;
}
ich soll aus dieser kleinen iterativen funktion eine rekursive machen:

int testx(int n)
{
int r = 0;

if (n%2!=0)
{
return r++;
}
else
{
return testx(n=n/2);
}
}

leider klappt diese noch nicht ganz richtig...

danke für eure antworten
 
Hallo,
1.) dein r hat bei einer Rekursiven Definition keine Verwendung mehr, da sich der
Returnwert aus 1 + den berechneten Wert der vorherigen Berechnung bestimmt
im Fall wenn n eine ungerade Zahl ist, andernfalls rufst du die Funktion einfach
wieder mit n/2 als Parameter auf ohne eine 1 aufzusummieren.
2.) Deine Abbruchbedingung ist n == 0 wie bei deiner Iterativen Lösung:

Code:
int bitsGesetzt(int n){

        if(n == 0)  
                return 0;            
        else if(n % 2 != 0){ 
                return 1 + bitsGesetzt(n / 2);
        }
        else
                return  bitsGesetzt(n / 2);  
}

Gruß

RedWing
 
Zurück