So bekomme ich glaube, wenn ich++ int und int + 1 Verwendung und anderen Ergebnis
int i = 0;
i++;
ODER
++i;
ODER
i += 1;
ODER
i = i + 1;
tun
soll es das gleiche Ergebnis geben.
Außer, wenn ich es in meinem Programm verwendete, gab es mir ein anderes Ergebnis.
Der spezifische Kontext befand sich innerhalb des Aufrufs einer rekursiven Funktion. mein Bestes Probieren, obwohl Englisch nicht meine Hauptsprache ist, weder mir oder mein Programm ...
Meine Funktion berechnet im Grunde das „Grad“ des Unterschiedes zwischen zwei Worten. Als eine Optimierung, ist meine erste Überprüfung bei jedem Anruf, um zu sehen, ob meine Anzahl von "Fehlern" höher ist als eine gegebene maximale Anzahl oder Fehler. Also, wenn es selbst nennt, es geht so:
errors = function(wordA,wordB, numberErrorMax, actualNumberOfErrors);
nun in einigen Fällen, es nennt sich auch mit einem zusaetzliche Fehler wie so:
errors = function(wordA, wordB, numberErrorMax, actualNumberOfErrors+1) +1;
errors = function(wordA, wordB, numberErrorMax, ++actualNumberOfErrors) +1;
Außer, diese beiden Anrufe würden nicht produzieren das gleiche Ergebnis, obwohl ich nur die ++
und +1
in meinem rekursiven Aufruf geändert habe. Der eine, der mir gute Ergebnisse bescherte, war +1
, und meine Funktion funktioniert jetzt richtig, aber ich verstehe nicht, wie es einen Unterschied machte.
Kann mir jemand das erklären? :) Dank
EDIT
Danke für all diese Antworten. Ich kann/kann meine Funktion nicht zeigen, weil:
1- es ist alles in Französisch (Schulprojekt, muss in Französisch sein), also alle meine Kommentare, Variablennamen und so würde den meisten Menschen nichts bedeuten
2- ich glaube meine Mitschüler höchstwahrscheinlich die Nutzung diese Website, wie gut und ich würde mein Code spät kopiert jemand andere Arbeit nicht will gestohlen werden beschuldigt.
der Lehrer hat uns mit einer Basis-Algorithmus, der die Funktion leitet sich 3-mal in Folge zu rufen, falls Wortlänge nicht 0 ist, die sind:
func(wA,wB, lengthA - 1, lengthB) + 1
func(wA,wB, lengthA, lengthB - 1) + 1
func(wA,wB, lengthA - 1, lengthB - 1) + (wA[i] != wB[i])
und wir nehmen mit dem niedrigsten Ergebnis von diese drei Anrufe. Wann immer wir 2 Zeichen lange Wörter betrachten, geht es ein paar Dutzend Mal durch die Funktion durch die verschiedenen Aufrufe. Das +1 am Ende bedeutet, dass wir hier einen Fehler sehen. Der letzte Anruf fügt nur einen Fehler hinzu, wenn die beiden Buchstaben unterschiedlich sind.
Meine persönliche Note war stattdessen haben:
func(wA,wB, lengthA - 1, lengthB, maxError, **++nbError**) + 1
func(wA,wB, lengthA, lengthB - 1, maxError, **++nbError**) + 1
if (wA[i] != wB[i]) { int err = 1; nbError++;}
func(wA,wB, lengthA - 1, lengthB - 1, maxError, nbError) + err
und das gab mir falsche Ergebnisse am Ende, würde ich oft, aber nicht immer, mit einem zusätzlichen „Fehlern“ enden. Habe ich es zu:
func(wA,wB, lengthA - 1, lengthB, maxError, **nbError+1**) + 1
func(wA,wB, lengthA, lengthB - 1, maxError, **nbError+1**) + 1
if (wA[i] != wB[i]) { int err = 1; nbError++;}
func(wA,wB, lengthA - 1, lengthB - 1, maxError, nbError) + err
und jetzt funktioniert es perfekt. Keine Ahnung, warum es einen Unterschied obwohl gemacht und das ist, was ich glaube, ich irgendwie verstehen müssen ...
Willkommen bei Stack Overflow. Bitte nehmen Sie sich die Zeit, [The Tour] (http://stackoverflow.com/tour) zu lesen und beziehen Sie sich auf das Material aus der [Hilfe] (http://stackoverflow.com/help/asking), was und wie Sie können fragen Sie hier. –
Es gibt nicht genügend Kontext, um Ihre Frage zu beantworten. Bitte geben Sie [MCVE] (stackoverflow.com/help/mcve) an. –
Präfix vs Postfix Inkrement geben unterschiedliche Ergebnisse in verschiedenen Kontexten. Sie müssen den * tatsächlichen * Code anzeigen, damit wir antworten können. –