# ESc 014

## Lab 5 -- Recursion

Thursday, May 9, 2002

### Objectives

### Your Mission

In this lab, you are to write a program that will compute the sum of the
first *n* integers, where *n* is a number that the user
will enter. For example, if the user enters the number 5, the program
will display the sum of 1 + 2 + 3 + 4 + 5, or 15.
### The Details

Your `main` function will ask the user to enter a positive
integer.
You should re-prompt for input if the user does not enter something
positive and continue to re-prompt until a positive number is
entered.
Your program should then call a __recursive__ function named
**sumOfInts** that will
take the user's integer (call it *n*) as a parameter.
**sumOfInts** will return the sum of 1+2+...+*n* so that
it can be printed by the `main` function.
Your **sumOfInts** function should not use loops (for, while,
do-while)
to compute the sum. It should use recursion. It should also be
able to do it **without using an array**.
Debug your code until it works.

### Think Recursively

Recursion is a tough concept. The trick to writing a recursive solution
is to first think about the two things every recursive function needs:
**A recursive case:** this is where you need to state the problem
in terms of a smaller version of itself. For this problem, you can
think
of it like this: the sum of the first 8 integers (i.e. if the user
entered 8)
is equal to 8 + the sum of the first 7 integers. In general, the
sum of the first *n* integers is equal to *n* + the sum
of the first *n*-1 integers.
**A base case:** this defines how the function will stop
recursing.
It usually corresponds to a "trivial" case of the problem -- one whose
solution is obvious. What would be the base case here? That is, what
would be the trivial *n* that the user could input whose solution
is obvious?

### How to turn in this lab

Remember, you will be graded on the correctness
of your implementation, neatness, presentation, style of your program
code,
thoroughness of your testing, and good use of the C++ language. It's
important
to comment your code where appropriate and to do little things like
space things
properly, use readable indentation, and also to make sure the overall
design and
logic of the program are coherent.
Turn in a hard copy of your source code along with your test
results appended at the
bottom as a comment. Then turn in the source code electronically on BlackBoard.

Return to Lab Index