2016-08-19 3 views
-3

Wie kann ich rekursiv prüfen, ob alle Ziffern einer ganzen Zahl sind unterschiedliche Zahlen in C++Recursively überprüfen, ob alle Ziffern einer Zahl verschieden sind

void Check(int n) 
{ 

    if (n < 10) 
     return; 
    else 
    { 
     bool eq = !(n % 10 == ((n/10) % 10)); 
     if (eq == true) 
     { 
      Check(n/10); 
     } 
    } 
} 
+1

Warum Rekursion - möglich, aber nicht natürlich? Ist das Schule Hausaufgaben? –

+0

zeigen Sie Ihren ersten Versuch –

+0

mein erster Versuch war, durch alle Ziffern gehen, aber ich kann nur zwei zusammenhängende Ziffern vergleichen, aber ich kann nicht eine Ziffer mit jedem anderen vergleichen und ja, es ist wichtig, Hausaufgaben –

Antwort

1

Sie sich erinnern können, die Sie haben eingegebenen Ziffern schon gesehen. Zum Beispiel mit einem Bool-Array der Länge 10. Beim ersten Aufruf Ihrer Funktion sind alle Einträge false. In jedem rekursiven Aufruf setzen Sie array[n%10] auf True. Wenn es schon true war, dann hast du eine doppelte Ziffer gefunden, sonst nicht.

Wenn Sie nur wollen Rekursion verwenden, können Sie eine zweite rekursive Funktion definieren:

bool checkIfDigitApearsInNumber(int n, int digit) { 
    if (n == 0) { 
     return false; 
    } else { 
     if (n % 10 == digit) { 
      return true; 
     } else { 
      return checkIfDigitApearsInNumber(n/10, digit); 
     } 
    } 
} 

In Ihrem Check funktionieren, müssen Sie mit n/10, n%10 in jedem Schritt, um diese Funktion aufrufen.

Verwandte Themen