Das ist elementar, aber mein Googeln schneidet es einfach nicht ab. Ich weiß, dass ich etwas anderes tun muss, um die Werte eines Arrays einzeln zu verschieben, aber die folgende Kodierung gibt mir die gleichen Werte für Items [k] bis Items [Unendlich] alle gleichwertigen Items [k]. Was ich nicht verstehe, ist, wie der ursprüngliche k + 1-Wert erhalten bleibt, während ich den k-Wert in den k + 1-Slot kopiere.
%Vor%Muss es eine rekursive Methode sein?
Eine einfache Option wäre, das Array rückwärts zu durchlaufen
%Vor%Option 2:
Wenn Sie Ihre Methode beibehalten möchten, können Sie die Variable temp auch anders verwenden
vor Ihrer for-Schleife initialisieren Sie Temp zu
%Vor%und dann können Sie in der Schleife temp verwenden, um den [k + 1] Wert in temp zu speichern, anstatt den [k] Wert zu speichern.
%Vor%Sie sollten auch Ihre Grenzen beachten, damit k + 1 nicht über das letzte Element im Array hinausgeht. Sie könnten etwas wie numItems - 1 mit einer vorherigen Überprüfung verwenden, um sicherzustellen, dass das Array nicht leer ist.
Sie können auch memmove verwenden, das Überlappungen von Regionen behandelt.
%Vor%