We have seen how to write scan algorithms using recursion, but what about search algorithms? NextPrime is easy to do.
  int nextPrime(const int n)
  {
    if(isPrime(n+1))
    {
      return n+1;
    }
    else
    {
      return nextPrime(n+1);
    }
  }
    That is, if n+1 is prime, then the smallest prime number that is greater than n must be n+1. But if n+1 is not prime, then get the smallest prime number that is greater than n+1.
Recall that we used a loop to write a definition of member(x, A, n), which returns true if at least one of the values A[0], … A[n−1] is equal to x. Let's do it using recursion. There are three cases. Each assumes that the preceding cases did not apply.
Member(x, A, n) asks whether any of the first n variables in array A holds x. If n = 0, then that cannot possibly be true, since there are no values to look at.
If A[n−1] = x, then yes, one of A[0], …, A[n−1] is equal to x. (Note that it is critical to handle the case where n = 0 first. If n = 0 then n−1 = −1, and there is no such thing as A[−1].)
If neither of the preceding cases is applicable, then n > 0 and A[n−1] ≠ x. In that case, member(x, A, n) is true if and only if member(x, A, n−1) is true. (We can ignore A[n−1] since it is not equal to x.)
Here is a definition of member based on those observations.
  bool member(const int x, const int A[], const int n)
  {
    if(n == 0)
    {
      return false;
    }
    else if(A[n-1] == x)
    {
      return true;
    }
    else
    {
      return member(x, A, n-1);
    }
  }
    
    Carrying on the same ideas, here is a recursive definition of allPositive. Note that allPositive(A, 0) is true, since there are not any non-positive numbers among the first 0 members of array A.
  bool allPositive(const int A[], const int n)
  {
    if(n == 0)
    {
      return true;
    }
    else if(A[n-1] <= 0)
    {
      return false;
    }
    else
    {
      return allPositive(A, n-1);
    }
  }
    
    
    Using recursion, write a definition of ascending(A, n), which returns true if A[0], … A[n−1] are in strictly ascending order, where A is an array of integers. If n = 1, the array is in ascending order. Answer
Write a recursive definition of anyPrime(a, b), which returns true if any of the numbers a, a + 1, … b are prime. If a > b then anyPrime(a, b) is false. Answer