как правильно задать цикл

308
29 октября 2017, 17:37

Здравствуйте. Нужно написать код, решающий

sinx/1!+sin^2x/2!+...+sin^8x/8!

Набросал кое что, но что-то мне подсказывает, что это неправильно. Насколько я понял, все норм, но вычисляется лишь для одной дроби

package aSan;
import java.util.*;
public class TestSin {
    double x=1;
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        TestSin test=new TestSin();
        double e=in.nextDouble();
        System.out.println(test.glav(e));
    }
    double glav(double a) {
        double b=Math.pow(Math.sin(x), a);
        double sum=0;
        double fact=1;
        for(int i=1;i<=a;i++) {
            fact*=i;
            double c=b/fact;
            sum+=c;
            System.out.println("fact =" + fact);
            System.out.println("summa =" + sum);
        }
        return 0;
    }
}
Answer 1

Если я правильно понял вопрос надо найти sinx/1!+sin^2x/2!+...+sin^ax/a!, где a – аргумент предающийся в функцию. Предположим, что вы передаете в функцию a = 8, тогда функция находит sin^8x/8!, прибавляет это к sum и на этом заканчивает работу. Кроме того она хоть и имеет возвращаемое значение double, в итоге ничего не возвращает. Надо проходить по циклу, увеличивая a от 1 до 8 и прибавлять промежуточный результат к sum. А когда цикл закончится вернуть sum. Кроме того лучше передавать x в функцию, а не определять ее глобальной переменной.

public static double sumOfProgression(double a, double x){
    double pow = 0;
    double sum = 0;
    double factorial = 0;
    for(int i = 1; i <= a; i++){
        pow = Math.pow(Math.sin(x), i);
        factorial = factorial(i);
        sum += pow / factorial;
    }
    return sum;
}

public static double factorial(double n){
    if (n == 0) return 1;
    return n * factorial(n-1);
}
READ ALSO
JavaFx обработка выхода из компонента TextField

JavaFx обработка выхода из компонента TextField

Как отследить в компоненте TextField, что курсор не в немЭто нужно для проверки значений в реестрации

292
Сокращение кода в Android Studio [дубликат]

Сокращение кода в Android Studio [дубликат]

На данный вопрос уже ответили:

282
Семафор с очередью

Семафор с очередью

есть семафор:

279