Skip to content

Instantly share code, notes, and snippets.

@deyindra
Created March 15, 2016 15:28
Show Gist options
  • Save deyindra/b9c35c721ceb717c1374 to your computer and use it in GitHub Desktop.
Save deyindra/b9c35c721ceb717c1374 to your computer and use it in GitHub Desktop.
FibonacciIterator
public class FibonacciIterator implements Iterator<Integer>{
private Integer start;
private Integer end;
private int number;
private Integer upperLimit;
private Integer nextNumber;
public FibonacciIterator(Integer start, Integer end, Integer upperLimit) {
if(start<=end && end<=upperLimit){
this.start = start;
this.end = end;
this.upperLimit = upperLimit;
number=1;
}else{
throw new IllegalArgumentException("Invalid input...");
}
setAdvance();
}
@Override
public boolean hasNext() {
return nextNumber<=upperLimit;
}
@Override
public Integer next() {
if(!hasNext()){
throw new NoSuchElementException("No More elements");
}
int prevNextNumber = nextNumber;
setAdvance();
return prevNextNumber;
}
private void setAdvance(){
if(number==1){
nextNumber = start;
number++;
}else if (number==2){
nextNumber=end;
number++;
}else{
int sum = start+end;
start=end;
end=sum;
nextNumber=end;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment