/////////////////////////////////////////////////////// // // fibfactorial.cpp // // Started 5/18/98 by Jeff Ondich // Last modified: 5/18/98 // // This program illustrates recursive and iterative // ways of computing N! and the Nth Fibonacci number. // //////////////////////////////////////////////////////// #include // Prototypes. int IterativeFib( int N ); int RecursiveFib( int N ); int IterativeFactorial( int N ); int RecursiveFactorial( int N ); int main( void ) { int top; cout << "How high do you want to go? "; cin >> top; cout << endl << "N\tFib(N)\tN!" << endl; cout << "-------------------------" << endl; for( int N=1; N <= top; N++ ) { cout << N << '\t' // << RecursiveFib(N) << '\t' << RecursiveFactorial(N) << endl; } return( 0 ); } int IterativeFib( int N ) { int previousTerm = 1; int currentTerm = 1; for( int i=3; i <= N; i++ ) { int nextTerm = previousTerm + currentTerm; previousTerm = currentTerm; currentTerm = nextTerm; } return( currentTerm ); } int RecursiveFib( int N ) { if( N <= 2 ) return( 1 ); else return( RecursiveFib(N-1) + RecursiveFib(N-2) ); } // // Returns N! if N >= 0, and 1 otherwise. // int IterativeFactorial( int N ) { int product = 1; for( int i=2; i <= N; i++ ) product = product * i; return( product ); } // // Pre-condition: N is >= 1. // Post-condition: RecursiveFactorial returns // N factorial. // int RecursiveFactorial( int N ) { if( N == 1 ) return( 1 ); else return( N * RecursiveFactorial(N-1) ); }