Ваш текущий подход будет сталкиваться с проблемами производительности, чем больше разрыв между двумя целыми числами.Можно выполнить оптимизацию.
Например, если у вас есть нечетное число целых чисел:
2 + 3 + 4 + 5 + 6 = 4 + 4 + 4 + 4 + 4
1 + 2 + 3 = 2 + 2 + 2
5 + 6 + 7 = 6 + 6 + 6
См. Шаблон?
2 + 3 + 4 + 5 + 6 = 4 + 4 + 4 + 4 + 4
= 5 * 4
= (max - min + 1) * ((max + min) / 2)
Для четногоколичество целых чисел:
2 + 3 + 4 + 5 = 3.5 + 3.5 + 3.5 + 3.5
= 4 * 3.5
5 + 6 + 7 + 8 + 9 + 10 = 7.5 + 7.5 + 7.5 + 7.5 + 7.5 + 7.5
= 6 * 7.5
Выглядит знакомо!Давайте посмотрим, работает ли наша предыдущая формула:
2 + 3 + 4 + 5 = (max - min + 1) * ((max + min) / 2)
= (5 - 2 + 1) * ((5 + 2) / 2)
= 4 * 3.5
Формула может быть упрощена:
(max - min + 1) * ((max + min) / 2) = (max - min + 1) * (max + min) / 2
Следовательно:
public static int sumNum(int num1, int num2) {
int min = Math.min(num1, num2);
int max = Math.max(num1, num2);
return (max - min + 1) * (max + min) / 2;
}