Здравствуйте. Нужно написать код, решающий
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;
}
}
Если я правильно понял вопрос надо найти 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);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как отследить в компоненте TextField, что курсор не в немЭто нужно для проверки значений в реестрации