/* C++ Programming, Example answer, Exercise 1, Sheet 8  */

/* Author: Rob Miller and William Knottenbelt
   Program last changed: 30th September 2001    */

/* This program illustrates the function "fibonacci()". */ 

#include<iostream>
#include<cstdlib>
using namespace std;

/* Function which calculates the Fibonacci number corresponding to its argument */
int fibonacci(int number);

/* MAIN PROGRAM: */
int main()
{
	int whole_number;
	
	cout << "Enter a positive integer:\n";
	cin >> whole_number;
	cout << "The " << whole_number;
	
	if ((whole_number % 10 == 1) && !(whole_number == 11))
		cout << "st"; 
	else if ((whole_number % 10 == 2) && !(whole_number == 12))
		cout << "nd"; 
	else if ((whole_number % 10 == 3) && !(whole_number == 13))
		cout << "rd"; 
	else
		cout << "th";
		
	cout << " Fibonacci number is " << fibonacci(whole_number) << ".\n";
	
	return 0;
}
/* END OF MAIN PROGRAM */

/* FUNCTION DEFINITION OF factorial: */
int fibonacci(int number)
{
	if (number < 1)
	{
		cout << "\n\nError - non-positive argument to 'fibonacci'\n";
		exit(1);
	}
	else if (number == 1 || number == 2)
		return 1;
	else
		return (fibonacci(number - 1) + fibonacci(number - 2));
}
/* END OF FUNCTION */
