例如,给出一个数字5,奇数和则为1+3+5=9。偶数和则为2+4=6。第一种是简单的算法,第二种是改进后,时间复杂度为1的算法。
View Code
static void SumMath(int n, ref int sumOdd, ref int sumEven) { if (n >= 0) { for (int i = 1; i <= n; i += 2) { checked { sumOdd += i; } } Console.WriteLine("Sum of odd num is " + sumOdd); for (int i = 2; i <= n; i += 2) { checked { sumEven += i; } } Console.WriteLine("Sum of even num is " + sumEven); } else { for (int i = -1; i >= n; i -= 2) { checked { sumOdd += i; } } Console.WriteLine("Sum of odd num is " + sumOdd); for (int i = -2; i >= n; i -= 2) { checked { sumEven += i; } } Console.WriteLine("Sum of even num is " + sumEven); } } static void SumMath2(int n, ref int sumOdd, ref int sumEven) { int sign = 1; if (n < 0) { n = n * -1; sign = -1; } int sum = n * (n + 1) / 2; if (n % 2 == 1) { checked { sumOdd = (sum + (n + 1) / 2) / 2 * sign; sumEven = (sum - (n + 1) / 2) / 2 * sign; } Console.WriteLine("Sum of odd num is " + sumOdd); Console.WriteLine("Sum of even num is " + sumEven); } else { checked { sumOdd = (sum - n / 2) / 2 * sign; sumEven = (sum + n / 2) / 2 * sign; } Console.WriteLine("Sum of odd num is " + sumOdd); Console.WriteLine("Sum of even num is " + sumEven); } }