0% found this document useful (0 votes)
55 views

Lab9 Recursion Exercises

A recursive function is proposed to check if a word is a palindrome by comparing the first and last characters and recursively calling the function on the substring between them until the whole string is checked. A second recursive function prints an integer as a binary number by recursively calling itself on the integer divided by 2 and conditionally printing the remainder. A third recursive function generates a fractal asterisk pattern by recursively calling itself twice, once to print the top part and once to print the bottom part of the pattern, with the number of asterisks and indentation level halved each time.
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
55 views

Lab9 Recursion Exercises

A recursive function is proposed to check if a word is a palindrome by comparing the first and last characters and recursively calling the function on the substring between them until the whole string is checked. A second recursive function prints an integer as a binary number by recursively calling itself on the integer divided by 2 and conditionally printing the remainder. A third recursive function generates a fractal asterisk pattern by recursively calling itself twice, once to print the top part and once to print the bottom part of the pattern, with the number of asterisks and indentation level halved each time.
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 2

RECURSION EXERCISES

1.
A palindrome is a word that reads the same forwards and backwards, like level
or sees or deified. Write a recursive function that checks whether a single word
supplied by the user is a palindrome. Dont worry about upper and lowercase issues.
Here is a prototype:
bool is_palindrome(unsigned int a, unsigned int b, const string& s)
You may want to #include <string>; this library is useful because it contains a function
length(), which tells you how long the string is.
Hint: there are two variants of the base case: consider the case for tot or toot, both of
which are palindromes. Do not use any local variables.
EXAMPLES:
ABCDEFGFEDCBA is a palindrome
ABCDEFGGFEDCBA is a palindrome
ABCDEFGEDCBA is not a palindrome
2.
(From Prof. Mains Web page at
http://www.cs.colorado.edu/~main/projects/chap09c.html) Write a recursive function that
takes an integer and prints it out as a binary one. Here is the prototype:
void binary_print(ostream& outs, unsigned int n);
The function prints the value of n as a BINARY number to the ostream outs. If n is zero,
then a single zero is printed; otherwise no leading zeros are printed in the output. The '\n'
character is NOT printed at the end of the output. Do not use any local variables.
EXAMPLES:
n=0 Output:0
n=4 Output:100
n=27 Output:11011
3.
(From Prof. Mains Web page at
http://www.cs.colorado.edu/~main/projects/chap09a.html)Examine this fractal pattern of
asterisks and blanks, and write a recursive method that can generate patterns such as this:
*
* *
*
* * * *
*
* *
*
* * * * * * * *
*
* *
*
* * * *
*
* *
*

With recursive thinking, the method needs only seven or eight lines of code (including
two recursive calls). Your method should look like this:
void pattern(ostream& outs, int n, int i)
// Precondition: n is a power of 2 greater than zero.
// Postcondition: A pattern based on the above example has been
// printed. The longest line of the pattern has
// n stars beginning in column i of the output. For example,
// The above pattern is produced by the call pattern(8, 0).
Hints: You do not need to check the precondition. Think about how the pattern is a
fractal. Can you find two smaller versions of the pattern within the large pattern? Here is
some code that may be useful within your method:
// A loop to print exactly i spaces (Elizs solution modified this to print 2*i spaces):
for (k = 0; k < i; k++) outs << " ";
// A loop to print n asterisks, each one followed by a space:
for (k = 0; k < n; k++) outs << "* ";

You might also like