Ziffer in Zahl Rekursiv

Devil MC

Mitglied
Moin erstmal.

Meine aufgabe ist: Ich soll von einer beliebigen Int-zahl die anzahl der darin enthaltenen ziffern rekursiv berechnen.

Also zahl = 12746187134, ziffer = 1,ergebnis soll 3 sein, da 3x die 1 in der zahl enthalten ist.


Dies ist mein Ansatz. (ist noch nicht vollständig)

Mein Problem ist, dass ich nicht weiß wie ich die Anzahl der Aufrufe zählen kann, wenn die Zahl==Ziffer ist.

Für Hilfe bedanke ich mich schon mal im voraus.

Java:
public static int zaehleZifferInZahl(int ziffer, int zahl)
    {
        if(zahl<=0 | (ziffer<=0 && ziffer>=9))
        {
            return -1;
        }
        if(zahl<=9)
        {
            
            return zahl;
        }

        else
        {
            if(ziffer==(zahl%10))
            {
                
                zaehleZifferInZahl(ziffer,zahl/10);
                
            }
            else
            {
                zaehleZifferInZahl(ziffer,zahl/10);    
            }   
            
        }
       return ;
    }
}
 
Du könntest es so machen
Java:
if(ziffer==(zahl%10)) {
  return zaehleZifferInZahl(ziffer,zahl/10)+1;
} else {
  return zaehleZifferInZahl(ziffer,zahl/10);    
}

Dann musst du aber auch den oberen Teil anpassen, dass er 0 zurückliefert.
 
Einen Zähler darf ich leider nicht einbauen. Das ist ja mein Problem.

@XHelp: wie meinst du das mit dem oberen Teil?


Bin jetzt so weit. Allerdings klappt das mit 1 als ziffer nicht. Da gibt er immer 2 aus obwohl ja 3 drin vorkommen

Java:
public static void main(String[] args) 
    {
        int zahl=1213414,ziffer=1;
        
        System.out.println(zaehleZifferInZahl(ziffer,zahl)); 
    }

  public static int zaehleZifferInZahl(int ziffer, int zahl)
    {
        if(zahl<=0 | (ziffer<=0 && ziffer>=9))
        {
            return -1;
        }
        if(zahl<=9)
        {
            return zaehleZifferInZahl(ziffer,zahl/10)+1;
        }

        else
        {
            if(ziffer==(zahl%10))
            {
               return zaehleZifferInZahl(ziffer,zahl/10)+1;              
            }
            else
            {
               return zaehleZifferInZahl(ziffer,zahl/10);    
            }   
            
        }
    }
}
 
Zuletzt bearbeitet:

Zurück
Oben