我有以下代碼:條件語句,以及如何增加一個變量
public static int Compute(string a, string b, bool ignoreCase)
{
// Allocate distance matrix
int[,] d = new int[a.Length + 1, b.Length + 1];
// Get character comparer
CharComparer isEqual = (ignoreCase) ?
(CharComparer)CharCompareIgnoreCase : CharCompare;
// Compute distance
for (int i = 0; i <= a.Length; i++)
d[i, 0] = i;
for (int j = 0; j <= b.Length; j++)
d[0, j] = j;
for (int i = 1; i <= a.Length; i++)
{
for (int j = 1; j <= b.Length; j++)
{
if (isEqual(a[i - 1], b[j - 1]))
{
// No change required
d[i, j] = d[i - 1, j - 1];
}
else
{
d[i, j] =
Math.Min(d[i - 1, j] + 1, // Deletion
insertions= Math.Min(d[i, j - 1] + 1, // Insertion
substitutions= d[i - 1, j - 1] + 1)); // Substitution
}
}
}
的鍵位是在與意見缺失,插入和取代的底部,我想知道我怎麼可以添加一個變量遞增器因此每次檢測到刪除錯誤時,變量都會增加一個。我已經試過:
{ d[i, j] =
deletion= Math.Min(d[i - 1, j] + 1, // Deletion
insertions= Math.Min(d[i, j - 1] + 1 + insertion ++, // Insertion
substitutions= d[i - 1, j - 1] + 1)); // Substitution
}
但只是沒有運氣
這是一個非常糟糕的編程習慣混合計算和這樣的副作用;它使代碼很難閱讀。如果您想執行計算,請執行計算並*然後*遞增計數器。 – 2013-03-22 20:02:57
埃裏克是正確的:只是將這個怪物單一的聲明重組爲多個,你會很容易實現你的目標!如果它變得太複雜,你不能理解 - 簡化。 – usr 2013-03-22 20:06:13
可疑類似於http://stackoverflow.com/q/15559578/56778 – 2013-03-22 20:12:23