//-------------------------------------------------------------------------
//
// recursion-iteration.cpp
//
// Written by:    Elizabeth Sklar
// Last modified: 25th November 2007

// A program that uses both iteration and recursion to print out the
// contents of an array.

#include <iostream>
using namespace std;

//-------------------------------------------------------------------------
//
// array class

class array {
private:
  int *data;
  int size;
public:
  array( int n ) : size( n ) { data = new int[n]; }
  void set( int x, int v ) { data[x] = v; }
  void printI();
  void printR( int x );
}; // end of class array

//---------------------------
//
// iterative print

void array::printI() {
  for ( int i=0; i<size; i++ )
    cout << data[i] << " ";
  cout << endl;
} // end of printI()

//---------------------------
//
// recursive print

void array::printR( int x ) {
  if ( x < size ) {
    cout << data[x] << " ";
    printR( x+1 );
  }
  else {
    cout << endl;
  }
} // end of printR()

//-------------------------------------------------------------------------
//
// main

int main() {
  array A( 5 );
  for ( int i=0; i<5; i++ )
    A.set( i,i*10 );
  cout << "output from iterative printI(): ";
  A.printI();
  cout << "output from recursive printR(): ";
  A.printR( 0 );
} 

// end of main() method
