Lab 14 Practicing Recursive Functions Learning Objectives Th
Lab 14: Practicing Recursive Functions
Learning Objectives: The objective of this lab is to gain experience with writing recursive functions.
Assignment: Write the following recursive functions (no credit for iterative implementations) and Write a driver to test the functions
a. Write a recursive function writeLine() that writes a character repeatedly to form a line of n characters. For example, writeLine(\'*\',5) should produce the line *****.
b. Write a recursive function writeBlock() that uses the method writeLine() to write m lines of n characters each. For example, writeBlock(\'*\',5,3) should produce the following output:
*****
*****
*****
c. Write a recursive function writeBackward() that write a given string of characters in reverse order. For example, writeBackward(“abcde”, 5) should give the output: edcba
d. Write a recursive function void displayVector(const vector<T> & A, int first, int last) that receives a vector A, first index, last index and displays the vector in order
e. Write a recursive function int vowels(string s, int size) that receives a string and returns the number of vowels in the string
f. Write a recursive function bool Palindrome (string s) that receives a string and returns true if the string is palindrome, and false otherwise. Hint: use string size( ) and erase( ) functions.
g. Write a recursive function void ReverseString (string s) that receives a string and print the string backwards. Hint: use string size( ) and erase( ) functions.
Solution
#include <iostream>
using namespace std;
void writeLine(char, int);
void writeBlock(char , int , int);
int main()
{
char answer;
char xchar;
int numInt;
do
{
//testing writeLine()
cout << \"Enter a character: \" << endl;
cin >> xchar;
cout << \"Enter a non-negative number: \" << endl;
cin >> numInt;
writeLine(xchar, numInt);
cout << endl;
//testing writeBlock()
int lnum;
cout << \"Enter number of lines\";
cin >> lnum;
writeBlock(xchar, numInt, lnum);
cout << \"again? \";
cin >> answer;
}
while (answer == \'Y\' || answer == \'y\');
}
void writeLine(char x, int num)
{
if (num >= 1) //anchor case
{
cout << x;
writeLine(x, num - 1); //inductive
}
}
void writeBlock(char x, int num, int lnum)
{
if (lnum >= 1) //anchor case
{
writeLine(x, num);
cout << \"\ \";
writeBlock(x, num, lnum - 1); //inductive
}
}

