Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • DSA
  • Practice Searching Algorithms
  • MCQs on Searching Algorithms
  • Tutorial on Searching Algorithms
  • Linear Search
  • Binary Search
  • Ternary Search
  • Jump Search
  • Sentinel Linear Search
  • Interpolation Search
  • Exponential Search
  • Fibonacci Search
  • Ubiquitous Binary Search
  • Linear Search Vs Binary Search
  • Interpolation Search Vs Binary Search
  • Binary Search Vs Ternary Search
  • Sentinel Linear Search Vs Linear Search
Open In App
Next Article:
Sentinel Linear Search
Next article icon

Recursive Linear Search Algorithm

Last Updated : 25 Jul, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Linear Search is defined as a sequential search algorithm that starts at one end and goes through each element of a list until the desired element is found, otherwise the search continues till the end of the data set.

How Linear Search Works?

Linear search works by comparing each element of the data structure with the key to be found. To learn the working of linear search in detail, refer to this post.

Pseudocode for Recursive Linear Search:

LinearSearch (array, index, key):
    if index < 0:
        return -1;
    if item = key:
        return index
    return LinearSearch (array, index-1, key)

Implementation of Recursive Linear Search:

Below is the recursive implementation of linear search:

C++14
// C++ Recursive Code For Linear Search #include <bits/stdc++.h> using namespace std;  int linearsearch(int arr[], int size, int key) {     if (size == 0) {         return -1;     }     else if (arr[size - 1] == key) {                  // Return the index of found key.         return size - 1;     }     return linearsearch(arr, size - 1, key); }  // Driver Code int main() {     int arr[] = { 5, 15, 6, 9, 4 };     int key = 4;      // Function call     int ans = linearsearch(arr, 5, key);     if (ans == -1) {         cout << "The element " << key << " is not found."              << endl;     }     else {         cout << "The element " << key << " is found at "              << ans << " index of the given array." << endl;     }     return 0; } 
C
#include <stdio.h>  // Define a function to perform the linear search int linearSearch(int arr[], int size, int key) {     // If the size of the array is zero, return -1     if (size == 0) {         return -1;     }      // Check if the element at the current index     // is equal to the key     if (arr[size - 1] == key) {                  // If equal, return the index         return size - 1;     }     // If not equal, call the function again     // with the size reduced by 1     return linearSearch(arr, size - 1, key); }  // Driver code int main() {     int arr[] = { 5, 15, 6, 9, 4 };     int key = 4;     int index         = linearSearch(arr, sizeof(arr) / sizeof(int), key);     if (index == -1) {         printf("Key not found in the array.\n");     }     else {         printf("The element %d is found at %d index of the "                "given array \n",                key, index);     }     return 0; } 
Java
// Java Recursive Code For Linear Search import java.io.*;  class Test {      // Recursive Method to search key in the array     static int linearsearch(int arr[], int size, int key)     {         if (size == 0) {             return -1;         }         else if (arr[size - 1] == key) {              // Return the index of found key.             return size - 1;         }         return linearsearch(arr, size - 1, key);     }      // Driver method     public static void main(String[] args)     {         int arr[] = { 5, 15, 6, 9, 4 };         int key = 4;          // Function call to find key         int index = linearsearch(arr, arr.length, key);         if (index != -1)             System.out.println(                 "The element " + key + " is found at "                 + index + " index of the given array.");          else             System.out.println("The element " + key                                + " is not found.");     } } 
Python
# Python Program to Implement Linear Search Recursively   def linear_search(arr, size, key):      # If the array is empty we will return -1     if (size == 0):         return -1      elif (arr[size - 1] == key):          # Return the index of found key.         return size - 1          return linear_search(arr, size - 1, key)   # Driver code if __name__ == "__main__":     arr = [5, 15, 6, 9, 4]     key = 4     size = len(arr)      # Calling the Function     ans = linear_search(arr, size, key)     if ans != -1:         print("The element", key, "is found at",               ans, "index of the given array.")     else:         print("The element", key, "is not found.")  # Code Contributed By - DwaipayanBandyopadhyay # Code is modified by Susobhan Akhuli 
C#
// C# Recursive Code For Linear Search using System;  static class Test {      // Recursive Method to search key in the array     static int linearsearch(int[] arr, int size, int key)     {         if (size == 0) {             return -1;         }         else if (arr[size - 1] == key) {              // Return the index of found key.             return size - 1;         }         return linearsearch(arr, size - 1, key);     }      // Driver method     public static void Main(String[] args)     {         int[] arr = { 5, 15, 6, 9, 4 };         int key = 4;          // Method call to find key         int index = linearsearch(arr, arr.Length, key);          if (index != -1)             Console.Write("The element " + key                           + " is found at " + index                           + " index of the given array.");         else             Console.Write("The element " + key                           + " is not found.");     } }  // This Code is submitted by Susobhan Akhuli 
JavaScript
// JavaScript Recursive Code For Linear Search  let linearsearch = (arr, size, key) => {   if (size == 0) {     return -1;   }   else if (arr[size - 1] == key)   {        // Return the index of found key.     return size - 1;   }   return linearsearch(arr, size - 1, key); };  // Driver Code let main = () => {   let arr = [5, 15, 6, 9, 4];   let key = 4;   let ans = linearsearch(arr, 5, key);   if (ans == -1) {     console.log(`The element ${key} is not found.`);   } else {     console.log(       `The element ${key} is found at ${ans} index of the given array.`     );   }   return 0; };  main();  // This code is contributed by Aman Singla... 
PHP
<?php // PHP Recursive Code For Linear Search  // Recursive function to search key in the array function linearsearch($arr, int $size, int $key) {     if ($size == 0)         return -1;     else if ($arr[$size - 1] == $key)                  // Return index         return $size - 1;          return linearsearch($arr, $size - 1, $key); }  // Driver Code $arr = array(5, 15, 6, 9, 4); $i; $size = count($arr); $key = 4; $ans = linearsearch($arr, $size, $key); if ($ans != -1)     echo "The element ", $key, " is found at ", $ans,         " index of the given array."; else     echo "The element ", $key, " is not found."; // This code is submitted by Susobhan Akhuli ?> 

Output
The element 4 is found at 4 index of the given array.

Complexity Analysis:

Time Complexity:

  • Best Case: In the best case, the key might be present at the last index. So the best case complexity is O(1)
  • Worst Case: In the worst case, the key might be present at the first index i.e., opposite to the end from which the search has started in the list. So the worst case complexity is O(N) where N is the size of the list.
  • Average Case: O(N)

Auxiliary Space: O(1) as this is a tail recursion, so no recursion stack space is utilized.



Next Article
Sentinel Linear Search
author
kartik
Improve
Article Tags :
  • DSA
  • Searching
  • Basic Coding Problems
Practice Tags :
  • Searching

Similar Reads

  • Linear Search Algorithm
    Given an array, arr of n integers, and an integer element x, find whether element x is present in the array. Return the index of the first occurrence of x in the array, or -1 if it doesn't exist. Input: arr[] = [1, 2, 3, 4], x = 3Output: 2Explanation: There is one test case with array as [1, 2, 3 4]
    9 min read
  • What is Linear Search?
    Linear search is defined as the searching algorithm where the list or data set is traversed from one end to find the desired value. Linear search works by sequentially checking each element in the list until the desired value is found or the end of the list is reached. Properties of Linear search :T
    3 min read
  • Linear Search in different languages

    • C Program for Linear Search
      Linear Search is a sequential searching algorithm in C that is used to find an element in a list. Linear Search compares each element of the list with the key till the element is found or we reach the end of the list. Example Input: arr = {10, 50, 30, 70, 80, 60, 20, 90, 40}, key: 30Output: Key Foun
      4 min read

    • C++ Program For Linear Search
      Linear search algorithm is the simplest searching algorithm that is used to find an element in the given collection. It simply compares the element to find with each element in the collection one by one till the matching element is found or there are no elements left to compare. In this article, we
      4 min read

    • Java Program for Linear Search
      Linear Search is the simplest searching algorithm that checks each element sequentially until a match is found. It is good for unsorted arrays and small datasets. Given an array a[] of n elements, write a function to search for a given element x in a[] and return the index of the element where it is
      2 min read

    • Linear Search - Python
      Given an array, arr of n elements, and an element x, find whether element x is present in the array. Return the index of the first occurrence of x in the array, or -1 if it doesn’t exist. Examples: Input: arr[] = [10, 50, 30, 70, 80, 20, 90, 40], x = 30Output : 2Explanation: For array [10, 50, 30, 7
      4 min read

    • 8085 program for Linear search | Set 2
      Problem - Write an assembly language program in 8085 microprocessor to find a given number in the list of 10 numbers, if found store 1 in output else store 0 in output. Example - Assumption - Data to be found at 2040H, list of numbers from 2050H to 2059H and output at 2060H. Algorithm - Load data by
      2 min read

  • Recursive Linear Search Algorithm
    Linear Search is defined as a sequential search algorithm that starts at one end and goes through each element of a list until the desired element is found, otherwise the search continues till the end of the data set. How Linear Search Works?Linear search works by comparing each element of the data
    6 min read
  • Sentinel Linear Search
    Sentinel Linear Search as the name suggests is a type of Linear Search where the number of comparisons is reduced as compared to a traditional linear search. In a traditional linear search, only N comparisons are made, and in a Sentinel Linear Search, the sentinel value is used to avoid any out-of-b
    7 min read
  • Is Sentinel Linear Search better than normal Linear Search?
    Sentinel Linear search is a type of linear search where the element to be searched is placed in the last position and then all the indices are checked for the presence of the element without checking for the index out of bound case. The number of comparisons is reduced in this search as compared to
    8 min read
  • Improving Linear Search Technique
    A linear search or sequential search is a method for finding an element within a list. It sequentially checks each element of the list until a match is found or the whole list has been searched. It is observed that when searching for a key element, then there is a possibility for searching the same
    15+ min read
  • Linear search using Multi-threading
    Given a large file of integers, search for a particular element in it using multi-threading. Examples: Input : 1, 5, 7, 10, 12, 14, 15, 18, 20, 22, 25, 27, 30, 64, 110, 220Output :if key = 20Key element foundInput :1, 5, 7, 10, 12, 14, 15, 18, 20, 22, 25, 27, 30, 64, 110, 220Output :if key = 202Key
    5 min read
  • Visualization of Linear Search

    • Linear Search Visualizer using PyQt5
      In this article we will see how we can make a PyQt5 application which will visualize the linear search algorithm. Linear search or sequential search is a method for finding an element within a list. It sequentially checks each element of the list until a match is found or the whole list has been sea
      5 min read

    • Linear Search Visualization using JavaScript
      GUI(Graphical User Interface) helps in better in understanding than programs. In this article, we will visualize Linear Search using JavaScript. We will see how the elements are being traversed in Linear Search until the given element is found. We will also visualize the time complexity of Linear Se
      3 min read

    Some Problems on Linear Search

    • Number of comparisons in each direction for m queries in linear search
      Given an array containing N distinct elements. There are M queries, each containing an integer X and asking for the index of X in the array. For each query, the task is to perform linear search X from left to right and count the number of comparisons it took to find X and do the same thing right to
      7 min read

    • Search an element in an unsorted array using minimum number of comparisons
      Given an array of n distinct integers and an element x. Search the element x in the array using minimum number of comparisons. Any sort of comparison will contribute 1 to the count of comparisons. For example, the condition used to terminate a loop, will also contribute 1 to the count of comparisons
      7 min read

    • Search in a row wise and column wise sorted matrix
      Given a matrix mat[][] and an integer x, the task is to check if x is present in mat[][] or not. Every row and column of the matrix is sorted in increasing order. Examples: Input: x = 62, mat[][] = [[3, 30, 38], [20, 52, 54], [35, 60, 69]]Output: falseExplanation: 62 is not present in the matrix. In
      14 min read

geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences