Self-Test Exercises

DataMatrix Maker In C#.NETUsing Barcode generation for .NET Control to generate, create ECC200 image in VS .NET applications.

6 If your program produces an error message that says stack overflow, what is a likely source of the error 7 Write an iterative version of the function cheers defined in Self-Test Exercise 1 8 Write an iterative version of the function defined in Self-Test Exercise 2 9 Write an iterative version of the function defined in Self-Test Exercise 3

Creating ECC200 In Visual Studio .NETUsing Barcode creation for ASP.NET Control to generate, create Data Matrix 2d barcode image in ASP.NET applications.

Recursive Functions That Return a Value

ECC200 Creator In .NET FrameworkUsing Barcode maker for .NET framework Control to generate, create ECC200 image in Visual Studio .NET applications.

10 Trace the recursive solution you made to Self-Test Exercise 4 11 Trace the recursive solution you made to Self-Test Exercise 5

DataMatrix Generator In Visual Basic .NETUsing Barcode maker for .NET framework Control to generate, create ECC200 image in .NET applications.

Recursive Functions That Return a Value

Code 39 Extended Generator In JavaUsing Barcode encoder for Java Control to generate, create Code 39 Extended image in Java applications.

To iterate is human, to recurse divine

Generating DataMatrix In Visual Studio .NETUsing Barcode encoder for VS .NET Control to generate, create ECC200 image in .NET applications.

Anonymous

Make Barcode In .NETUsing Barcode maker for VS .NET Control to generate, create bar code image in Visual Studio .NET applications.

s GENERAL FORM FOR A RECURSIVE FUNCTION THAT RETURNS A VALUE

GTIN - 12 Decoder In Visual Studio .NETUsing Barcode recognizer for VS .NET Control to read, scan read, scan image in .NET framework applications.

The recursive functions you have seen thus far are all void functions, but recursion is not limited to void functions A recursive function can return a value of any type The technique for designing recursive functions that return a value is basically the same as that for void functions An outline for a successful recursive function de nition that returns a value is as follows: s One or more cases in which the value returned is computed in terms of calls to the same function (that is, using recursive calls) As was the case with void functions, the arguments for the recursive calls should intuitively be smaller s One or more cases in which the value returned is computed without the use of any recursive calls These cases without any recursive calls are called base cases or stopping cases (just as they were with void functions) This technique is illustrated in the next programming example

Decode Bar Code In .NET FrameworkUsing Barcode scanner for VS .NET Control to read, scan read, scan image in VS .NET applications.

Example

Barcode Creator In .NETUsing Barcode generation for ASP.NET Control to generate, create barcode image in ASP.NET applications.

ANOTHER POWERS FUNCTION

European Article Number 13 Creation In .NET FrameworkUsing Barcode drawer for ASP.NET Control to generate, create EAN13 image in ASP.NET applications.

3 introduced the predefined function pow that computes powers For example, pow(20, 30) returns 2030, so the following sets the variable result equal to 80:

Code 128 Creator In JavaUsing Barcode generation for Java Control to generate, create Code 128C image in Java applications.

double result = pow(20, 30);

Print Bar Code In Visual Studio .NETUsing Barcode generator for .NET framework Control to generate, create bar code image in .NET framework applications.

The function pow takes two arguments of type double and returns a value of type double Display 133 contains a recursive definition for a function that is similar but that works with the type int rather than double This new function is called power For example, the following will set the value of result2 equal to 8, since 23 is 8:

Create Bar Code In JavaUsing Barcode creator for Java Control to generate, create barcode image in Java applications.

int result2 = power(2, 3);

Making Code 128 Code Set C In Visual Studio .NETUsing Barcode printer for ASP.NET Control to generate, create Code 128 Code Set C image in ASP.NET applications.

Our main reason for defining the function power is to have a simple example of a recursive function, but there are situations in which the function power would be preferable to the function

DataMatrix Generator In JavaUsing Barcode creation for Java Control to generate, create DataMatrix image in Java applications.

Recursion

Bar Code Generation In JavaUsing Barcode maker for Java Control to generate, create barcode image in Java applications.

Display 133 The Recursive Function power

UPC-A Generation In JavaUsing Barcode creation for Java Control to generate, create UPC A image in Java applications.

1 2 3 4 5 //Program to demonstrate the recursive function power #include <iostream> #include <cstdlib> using std::cout; using std::endl;

Barcode Encoder In Visual C#Using Barcode creation for VS .NET Control to generate, create bar code image in Visual Studio .NET applications.

6 7 8

Recognize Barcode In JavaUsing Barcode reader for Java Control to read, scan read, scan image in Java applications.

int power(int x, int n); //Precondition: n >= 0 //Returns x to the power n

9 10 11 12 13

int main( ) { for (int n = 0; n < 4; n++) cout << "3 to the power " << n << " is " << power(3, n) << endl;

14 15

return 0; }

16 17 18 19 20 21 22 23

//uses iostream and cstdlib: int power(int x, int n) { if (n < 0) { cout << "Illegal argument to power\n"; exit(1); }

24 25 26 27 28

if (n > 0) return ( power(x, n - 1)*x ); else // n == 0 return (1); }

SAMPLE DIALOGUE

3 3 3 3 to to to to the the the the power power power power 0 1 2 3 is is is is 1 3 9 27

Recursive Functions That Return a Value

pow The function pow returns a value of type double, which is only an approximate quantity The function power returns a value of type int, which is an exact quantity In some situations, you might need the additional accuracy provided by the function power

The definition of the function power is based on the following formula:

xn is equal to xn 1 * x

Translating this formula into C++ says that the value returned by power(x, n) should be the same as the value of the expression

power(x, n - 1)*x

The definition of the function power given in Display 133 does return this value for power

(x, n), provided n > 0

The case where n is equal to 0 is the stopping case If n is 0, then power(x, n) simply returns 1 (since x0 is 1) Let s see what happens when the function power is called with some sample values First consider the following simple expression:

power(2, 0)

When the function is called, the value of x is set equal to 2, the value of n is set equal to 0, and the code in the body of the function definition is executed Since the value of n is a legal value, the if-else statement is executed Since this value of n is not greater than 0, the return statement after the else is used, so the function call returns 1 Thus, the following would set the value of result3 equal to 1:

int result3 = power(2, 0);