// fib-tail-recursive.C
// Name:  Gary T. Leavens
// TA:    Bjarne Stroustrup
// Section:  A1

static double fib_it(unsigned int n,
                     double acc1, double acc2)
{
  if (n == 1) {
    return acc2;
  } else {
    return fib_it(n-1, acc2, acc1 + acc2);
  }
}

double fib(unsigned int n) {
  if (n == 0) {
    return n;
  } else {
    return fib_it(n, 0.0, 1.0);
  }
}
