有效地计算功能

时间:2014-09-12 03:43:54

标签: algorithm

给出

f(n) = 1+x+x^2+x^3+……+x^n, (n >=0 && n is a integer)

输入x,n,我们如何以更高的效率计算结果?

3 个答案:

答案 0 :(得分:5)

它是geometric progression。注意到

(x-1)f(n) = x^{n+1}-1

你得到了

f(n)=(x^{n+1}-1)/(x-1).

答案 1 :(得分:1)

n倍增和{{1​​}}增量。将总和简化为封闭形式很容易,但计算封闭形式需要评估n,这也可能会导致xn+1倍增,但不需要分割。

虽然这实际上是有效的C,但可以将其视为伪代码。一个真正的实现将检查负n而不是循环遍历n数字空间的一半。如果你需要将它应用于整数int而不是浮点x,那肯定是要走的路。

x

答案 2 :(得分:0)

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);
    }
}