jeudi 6 août 2020

while coding for binary search using recursion i faced some doubts

When using only if, I had to return some integer

public class solution {
    
    public static int binarySearch(int arr[], int x,int si,int ei){
        if(si>ei){
            return -1;
        }
        int mid=(si+ei)/2;
        if(arr[mid]==x){
            return mid;
        }
        if(arr[mid]>x){
           return binarySearch(arr,x,si,mid-1);
        }
        if(arr[mid]<x){
           return binarySearch(arr,x,mid+1,ei);
        }
        return 0;
    }

   
}

but when using if-else-if, I don't have to return any integer, why?

public class solution {
    
    public static int binarySearch(int arr[], int x,int si,int ei){
        if(si>ei){
            return -1;
        }
       
        int mid=(si+ei)/2;
        if(arr[mid]==x){
            return mid;
        }
        else if(arr[mid]>x){
           return binarySearch(arr,x,si,mid-1);
        }
        else {
           return binarySearch(arr,x,mid+1,ei);
        }
    }
}

Aucun commentaire:

Enregistrer un commentaire