1: /** @file fibonacci.cpp
2: Outputs the first n Fibonacci numbers.
3: */
5: #include <iostream>
6: #include <iomanip>
7: using namespace std;
9: #include "utilities.h"
10: using Scobey::Pause;
11: using Scobey::ReadInt;
12: using Scobey::userSaysYes;
15: int fibonacci
16: (
17: int n //in
18: )
19: /**<
20: Compute and the nth Fibonacci number, i.e. the nth term of
21: the sequence 1, 1, 2, 3, 5, 8, 13, ...
22: @return The nth Fibonacci number.
23: @pre n contains a positive integer.
24: @post No other side effects.
25: */
26: {
27: if (n == 1 || n == 2)
28: return 1;
29: else
30: return fibonacci(n-2) + fibonacci(n-1);
31: }
34: void main(void)
35: {
36: cout << "\nThis program outputs the first n "
37: "Fibonacci numbers (n entered by the user).\n";
38: Pause();
40: do
41: {
42: int n;
43: ReadInt("Enter the number of terms you want: ", n);
44: cout << "Here are the first " << n << " Fibonacci numbers:\n\n";
45: int count = 0;
46: for (int i = 1; i <= n; i++)
47: {
48: cout << setw(10) << fibonacci(i);
49: count++;
50: //if (count%8 == 0) cout << "\n";
51: //Above line not necessary on Windows, since if 80 characters
52: //on a line is reached, an automatic newline is inserted.
53: }
54: if (count%8 != 0) cout << "\n\n"; else cout << "\n";
55: //The else part is needed in the above line to produce the blank
56: //line after the table in the case when the total number of values
57: //is a multiple of 8.
58: }
59: while (userSaysYes("Do it again?"));
60: }