Rewrite an alternate code that produces the same as the one presented below (you can only use recursion c++, no loops
Rewrite an alternate code that produces the same as the one presented below (you can only use recursion c++, no loops
Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
Related questions
Question
Rewrite an alternate code that produces the same as the one presented below (you can only use recursion c++, no loops whatsoever).
![```cpp
// function for checking if a word is in the array dict[] or not
bool findWord(string word, const string dict[], int top, int bot) {
if (top > bot) {
return false; // string is not found.
}
else {
int mid = (top + bot) / 2;
string check = dict[mid];
check[0] = tolower(check[0]); // making all words lowercase
if (word.compare(check) == 0) {
return true;
} else if (word.compare(check) > 0) {
return findWord(word, dict, top, mid - 1);
} else if (word.compare(check) < 0) {
return findWord(word, dict, mid + 1, bot);
}
}
return true;
}
```
### Explanation:
This code is a C++ function designed to perform a binary search to determine if a specific word exists in a sorted array of strings, `dict[]`. The function, `findWord`, uses recursion to achieve this.
- **Parameters:**
- `word`: The string to be searched for.
- `dict[]`: The array of strings to be searched.
- `top`: The starting index for the search (initially set to the first index of the array).
- `bot`: The ending index for the search (initially set to the last index of the array).
- **Process:**
1. The function checks if `top` is greater than `bot`, returning `false` if true, meaning the word is not in the dictionary.
2. It calculates the midpoint of the current search range.
3. It retrieves and modifies the midpoint string by converting the first character to lowercase to standardize the comparison.
4. Using `compare`, it checks:
- If `word` is equal to the middle word (`check`), it returns `true`.
- If `word` is greater, it searches the left half of the array.
- If `word` is smaller, it searches the right half of the array.
This algorithm ensures efficient searching, suitable for large datasets, assuming `dict[]` is pre-sorted.](/v2/_next/image?url=https%3A%2F%2Fcontent.bartleby.com%2Fqna-images%2Fquestion%2F75d9c7d3-d734-453a-85e0-780b79a7d6f6%2F55c92795-41f2-4ccf-909a-a02461af479f%2F06avdpe_processed.png&w=3840&q=75)
Transcribed Image Text:```cpp
// function for checking if a word is in the array dict[] or not
bool findWord(string word, const string dict[], int top, int bot) {
if (top > bot) {
return false; // string is not found.
}
else {
int mid = (top + bot) / 2;
string check = dict[mid];
check[0] = tolower(check[0]); // making all words lowercase
if (word.compare(check) == 0) {
return true;
} else if (word.compare(check) > 0) {
return findWord(word, dict, top, mid - 1);
} else if (word.compare(check) < 0) {
return findWord(word, dict, mid + 1, bot);
}
}
return true;
}
```
### Explanation:
This code is a C++ function designed to perform a binary search to determine if a specific word exists in a sorted array of strings, `dict[]`. The function, `findWord`, uses recursion to achieve this.
- **Parameters:**
- `word`: The string to be searched for.
- `dict[]`: The array of strings to be searched.
- `top`: The starting index for the search (initially set to the first index of the array).
- `bot`: The ending index for the search (initially set to the last index of the array).
- **Process:**
1. The function checks if `top` is greater than `bot`, returning `false` if true, meaning the word is not in the dictionary.
2. It calculates the midpoint of the current search range.
3. It retrieves and modifies the midpoint string by converting the first character to lowercase to standardize the comparison.
4. Using `compare`, it checks:
- If `word` is equal to the middle word (`check`), it returns `true`.
- If `word` is greater, it searches the left half of the array.
- If `word` is smaller, it searches the right half of the array.
This algorithm ensures efficient searching, suitable for large datasets, assuming `dict[]` is pre-sorted.
Expert Solution

This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
Step by step
Solved in 2 steps

Recommended textbooks for you

Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON

Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science

Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning

Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON

Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science

Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning

Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning

Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education

Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY