УчитываяЭффективно вычислить функцию
f(n) = 1+x+x^2+x^3+……+x^n, (n >=0 && n is a integer)
вход х, п, как мы можем работать на результат с большей эффективностью?
УчитываяЭффективно вычислить функцию
f(n) = 1+x+x^2+x^3+……+x^n, (n >=0 && n is a integer)
вход х, п, как мы можем работать на результат с большей эффективностью?
public class Test {
public static void main(String args[]) {
int x = 2, n = 10;
Double sum = new Double(0);
for (int i = 0 ; i <= n ; i++) {
sum = sum + Math.pow(x, i);
}
System.out.println(sum);
}
}
Это делает n
размножается и n
приращения. Легко поместить сумму в закрытую форму, но вычисление закрытой формы требует оценки xn+1
, что также может закончиться тем, что n
умножает, но не требует разделения.
Хотя это действительно действительный C, подумайте об этом как псевдокоде. Реальная реализация проверила бы отрицательный n
, а не зацикливала бы половину номера int
. Если вам нужно применить это к целому числу x
, а не к плавающей запятой x
, это определенно будет путем.
double polysum(int n, double x) {
double a = 1;
while (n--) a = x * a + 1;
return a;
}
Я переместил свой вопрос [здесь] (http://codereview.stackexchange.com/questions/62716/effectively-calculate-the-result-of-geometric-series). Сейчас немного другое, пожалуйста, взгляните. Спасибо всем. @ Rici, @ Pang, @ ankur-singhal, @ Джеймс Мэсси – Michael
Этот вопрос должен быть опубликован при просмотре кода – JamesENL
Вы хотите сказать, что этот вопрос не должен быть помечен как алгоритм? – Michael
Нет, я имею в виду, что это не сломанный фрагмент кода, который вы хотите исправить, это рабочий фрагмент кода, который вы хотите улучшить. – JamesENL