折半查找以及折半查找递归注意点示范:同时附带return 值。

代码演示在ubuntu下gcc演示:详细参考数据结构C语言版

#include<stdio.h>
#define COMPARE(x,y) (((x)<(y))?-1:((x)==(y))?0:1)//折半查找的迭代函数
int binsearch(int list[],int searchNum,int left,int right)
{
    int middle;
    while(left<=right)
    {
        middle=(left+right)/2;
        switch(COMPARE(list[middle],searchNum))
        {
            case -1:left=middle + 1;
                    break;
            case 0 :return middle;
            case 1 : right = middle -1;
        }
    }
    return -1;
}
//目前初步来说将一个函数转换为一个递归函数,必须有两个要素:构造递归调用终止的边界条件&&实现递归调用,使得每次递归调用都能够向最终解逼近一步。
int binsearch(int list[],int searchNum,int left,int right)//折半查找的递归函数
{
    int middle;
    while(left<=right)
    {
        middle=(left+right)/2;
        switch(COMPARE(list[middle],searchNum))
        {
            case -1:return binsearch(list,searchNum,middle + 1,right);
            case 0 :return middle;
            case 1 :return binsearch(list,searchNum,left,middle - 1);
        }
        }
    return -1;
}


//关于return -1/0/1的意思,折半查找函数中,如果返回为-1,就是说明没有找到相等的数据,非正常结束。return 0表示正常退出,return 非0表示异常结束。
原文地址:https://www.cnblogs.com/dog-and-cat/p/6636941.html