java-scuola/6.x/p6.12/Sol Prof/ExpGenerator.java

29 lines
551 B
Java

public class ExpGenerator implements Sequence<Double>{
private double x, nuovo, old, potenza, fattoriale;
private int n;
public static final double EPSILON = 1E-6;
public ExpGenerator(double x) {
this.x = x;
nuovo = 1;
old = 0;
potenza = 1;
fattoriale = 1;
n = 0;
}
public boolean hasNext() {
return Math.abs(nuovo-old) >= EPSILON;
}
public Double next() {
if(!hasNext()) throw new IllegalArgumentException();
old = nuovo;
n++;
potenza *= x;
fattoriale *= n;
nuovo = old + potenza/fattoriale;
return old;
}
}