Ваша логика в цикле for неверна. Хаха, я не совсем уверен, что ты говоришь, но давайте посмотрим, сможем ли мы пройти через это ...
Забудьте пока остальную часть кода и сосредоточьтесь на том, что делает цикл for:
Вы инициализируете переменную с плавающей запятой 'a' как 1 / x. Установите конечное значение как длину массива (хорошо). а затем вы увеличиваете переменные «а» на 1 и «х» на 1 ...
Теперь подумайте об этом так, вы инициализируете «a» как 1 / x, делая его 1. Он проходит через цикл со значением a = 1. Затем он увеличивает «x» на 1 и увеличивает «a» на 1. Теперь подумайте, потому что именно здесь ваша логика ошибочна. Это действительно делает x = 2 сейчас, но вы ТАКЖЕ делаете a = 2. «x» и «a» являются независимыми переменными. Перечитайте определение цикла for и посмотрите, сможете ли вы согласовать то, что вы пытаетесь сделать.
Теперь цикл позволяет вам выполнять итерации. В этом случае у вас есть 30 000 000 из них (15 000 000 «считать» и 15 000 000 «считать вниз»). Итак, давайте сделаем два цикла for, каждый с 15 000 000 итераций
for (int i = 1; i <= 15000000; i++){
statements;
}
for (int i = 15000000; i >= 1; i--){
statements;
}
Теперь вы хотите сложить вместе 1,0 / 1,0 + 1,0 / 2,0 + ... + 1,0 / 15 000 000,0. Инициализируйте sum1 в 0:
float sum1 = 0;
В каждой итерации вы собираетесь добавлять 1 / i к сумме. Таким образом, ваше утверждение внутри каждого цикла for будет выглядеть как
sum1 += 1/i;
что совпадает с
sum1 = sum1 + 1/i;
И вот оно у вас. Для первого цикла каждая итерация добавляет 1 / i, начиная с i = 1 и заканчивая i = 15 000 000. Для второго цикла добавляется 1 / i, начиная с i = 15 000 000 и заканчивая i = 1. Очевидно, в вашем случае вы можете заменить 15 000 000 на «numbers1.length». Затем верните sum1, и все ваши ошибки исчезнут просто так.
примечание: осторожно, как вы ограничиваете цикл for. Убедитесь, что он включает в себя конечные значения. (обратите внимание на <= 15 000 000 и> = 1 в двух циклах) Это не будет иметь большого значения в вашем коде, и ответ будет таким же, но в будущем он будет значительным.