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...
icon
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.
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
steps

Step by step

Solved in 2 steps

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
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 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)
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
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY