因此,我相信,如果我做使用++ int和INT + 1,並獲得不同的結果
int i = 0;
i++;
OR
++i;
OR
i += 1;
OR
i = i + 1;
它應該給出相同的結果。
除了在我的程序中使用它時,它給了我不同的結果。
具體的上下文是在對遞歸函數的調用中。盡我所能,雖然英語不是我的主要語言,但對我或我的程序都沒有...
我的功能基本上是計算兩個單詞之間差異的「程度」。作爲優化,我對每次電話的第一次驗證是查看我的「錯誤」數量是否高於給定的最大數量或錯誤。所以,當它調用本身,它是這樣:
errors = function(wordA,wordB, numberErrorMax, actualNumberOfErrors);
現在,在某些情況下,還與其它附加的錯誤,像這樣自稱:
errors = function(wordA, wordB, numberErrorMax, actualNumberOfErrors+1) +1;
errors = function(wordA, wordB, numberErrorMax, ++actualNumberOfErrors) +1;
除此之外,這兩個調用不會產生即使我在遞歸調用中只更改了++
和+1
。最終給我帶來好成績的是+1
,我的功能現在可以正常工作,但我不明白它是如何產生影響的。
有人可以向我解釋這個嗎? :)謝謝
編輯
感謝所有這些問題的答案。我沒有/不能顯示我的功能,因爲:
1-全部用法語(學校項目,必須用法語)所以我所有的評論,變量名稱等對大多數人都沒有任何意義
2-我相信我的同學很可能也會使用這個網站,我不希望我的代碼被盜,以至於被指責抄襲別人的作品。
老師與基礎算法,從而導致該函數調用自身3倍成一排,以防字長爲我們提供了不爲0,它們分別是:
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])
,我們採取的最低水平。這三個電話。所以每當我們看到兩個字符長的單詞時,它通過不同的調用通過函數進行了幾十次。最後的+1意味着我們認爲這裏有一個錯誤。如果兩個字母不同,最後的呼叫只會添加一個錯誤。
我個人接觸是有代替:
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
,這給了我錯誤的結果到了最後,我會經常,但並非總是如此,結束了一個額外的「錯誤」。 我改成:
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
現在它完美的工作。不知道爲什麼,這就不一樣了,雖然,這就是我覺得我需要以某種方式瞭解...
歡迎來到Stack Overflow。請花些時間閱讀[The Tour](http://stackoverflow.com/tour),並參閱[幫助中心](http://stackoverflow.com/help/asking)中的資料,瞭解您可以在這裏問。 –
沒有足夠的上下文來回答你的問題。請提供[MCVE](stackoverflow.com/help/mcve)。 –
前綴vs後綴增量在不同的上下文中給出不同的結果。您需要顯示*實際*代碼以便我們能夠回答。 –