logo CodeStepByStep logo


Language/Type: C++ recursion string return
Related Links:
Author: Marty Stepp (on 2016/06/16)

Write a recursive function named indexOf that accepts two strings s1 and s2 as parameters and that returns the starting index of the first occurrence of the second string s2 inside the first string s1, or -1 if s2 is not found in s1. The table below shows several calls to your function and their expected return values. If s2 is the empty string, always return 0 regardless of the contents of s1. If s2 is longer than s1, it of course cannot be contained in s1 and therefore your function would return -1 in such a case. Notice that case matters; the last example returns -1.

Call Value Returned
indexOf("Barack Obama", "Bar") 0
indexOf("foo", "foo") 0
indexOf("Stanford CS", "ford") 4
indexOf("Barack Obama", "ack") 3
indexOf("Barack Obama", "a") 1
indexOf("sandwich", "") 0
indexOf("Barack Obama", "McCain") -1
indexOf("Barack Obama", "ACK") -1

Constraints: Your solution must obey the following constraints:

  • Your solution must not use any loops; it must be recursive.
  • Strings have member functions named find and rfind, but you should not call them, because they allow you to get around using recursion. Similarly, the replace member is forbidden. You should limit yourself to using only the following string members:
    • at, append, compare, erase, insert, length or size, substr, trim, operators such as [], ==, !=, <, etc.
  • Do not construct any data structures (no array, vector, set, map, etc.), and do not declare any global variables. You are allowed to define other "helper" functions if you like.
Type your C++ solution code here:

This is a function problem. Write a C++ function as described. Do not write a complete program; just the function(s) above.

You must log in before you can solve this problem.

Log In

Need help?

If you do not understand how to solve a problem or why your solution doesn't work, please contact your TA or instructor.
If something seems wrong with the site (errors, slow performance, incorrect problems/tests, etc.), please

Is there a problem? Contact a site administrator.

© Marty Stepp, all rights reserved.