c语言-c return 出错。求解答

问题描述

c return 出错。求解答

感觉是不是我眼龊了哪里没看清楚,mid最后一次的值时2,然后return mid,result得到的却是1,为什么?

#include<stdio.h>

int binary_Search(int a[],int low,int high,int key){
    if(low>high) return -1;
    else{
        int mid=low+(high-low)/2;
        printf("low=%d,mid=%d,high=%dn",low,mid,high);
        if(a[mid]==key) {
            printf("a[mid]=%d,mid=%dn",a[mid],mid);
            return mid;
        }
        if(a[mid]<key)
            binary_Search(a,mid+1,high,key);
        if(a[mid]>key)
            binary_Search(a,low,mid-1,key);
    }
}

int main(){
    int a[]={0,1,2,3,4,5,6,7,9,10,11,12,13,14,15,16};
    int result;
    result=binary_Search(a,0,16,2);
    printf("result=%dn",result);
    return 0;
}

解决方案

很明显的错误嘛~
if(a[mid]key) return binary_Search(a,low,mid-1,key);

解决方案二:

if(a[mid] binary_Search(a,mid+1,high,key);
这个是啥呀,麻烦你好好的贴一下你的代码

解决方案三:

这个不是正常的吗,,没有错误啊

解决方案四:

if(a[mid]<key) return binary_Search(a,mid+1,high,key); if(a[mid]>key) return binary_Search(a,low,mid-1,key);

解决方案五:

额,,,,才发现没有return,谢谢啦。

时间: 2024-11-16 17:54:21

c语言-c return 出错。求解答的相关文章

c语言-C语言派寻问题求解答!!!

问题描述 C语言派寻问题求解答!!! 把一个二维实型数组a按照第0列的元素进行排序(由大到小排序,用冒泡法)例如:a[i][0]大于a[i+1][0],则i行与i+1行所有元素都要进行对换 (c语言解答) 解决方案 #include int main() { int num[3][2] = {{5,2},{3,1},{2,9}}; int temp; for(int i = 0;i<3-1; i++) { for(int j = 0;j<3-1-i; j++) { if(num[j][0]&g

编码-hibernate运行总是出错 求解答

问题描述 hibernate运行总是出错 求解答 一直出错困扰我两天了 求大家帮忙解决一下 谢谢了一月 18 2016 11:10:26 下午 org.hibernate.Version logVersionINFO: HHH000412: Hibernate Core {5.0.7.Final}一月 18 2016 11:10:26 下午 org.hibernate.cfg.Environment INFO: HHH000206: hibernate.properties not found一

一道c语言的题目,求解答

问题描述 一道c语言的题目,求解答 有函数原型为void f(int,int *);主函数中有变量定义:int a,*p=&a,b[10];则下列几种调用错误的是: A·f(a,p) B·f(*p,b) C·f(b,&a) D·f(*p,p) 我的想法是:子函数要接收一个整形变量,一个指针变量,那么B选项中b不是指针常量么? 求助大神们解答!谢谢! 答案是C 解决方案 C B中 b 是数组名,可以看作 const 的指针 C中第一个参数是b,但实际参数是 int 解决方案二: B 选项中的

eclipse里面布置resin总是出错 求解答

问题描述 eclipse里面布置resin总是出错 求解答 运行的时候会出现图一的错误,之后点击确定之后会出现图二的错误! 尝试了重装几次未果,网上搜索的配置方法尝试一下也不行!前来求助!大家帮我解答一下 谢谢了 解决方案 应该是版本问题吧 ,你检查一下JDK版本会不会和你现在不熟的版本有冲突?

c语言-C语言数组定义问题,求解答

问题描述 C语言数组定义问题,求解答 int b; scanf_s("%d", &b); int Array[]; int i; for (i = 0; i<b; i++) { scanf("%d", &Array[i]); } 这个为什么报错呀 解决方案 首先你的数组里面是不确定的,不能定义长度不确定的数组,除非你是用动态内存区定义.应该改为Array[100]或者其他的,其次sacnf后面不应该有_s 解决方案二: 你只是定义了数组, 但是

malloc-C语言字符指针问题求解答

问题描述 C语言字符指针问题求解答 main(){ char * a; a=(char * )malloc(40); scanf(""%s""* a );}上面代码中的scanf(""%s""* a);这行为什么是合法的?请赐教!不好意思第一次代码输错了-_- 解决方案 创建了一个40个字符长度的缓冲区,然后输入字符到这个缓冲区中.你测试下就知道了. 解决方案二: a=(char)malloc(40); 看不懂这要干嘛,怎么不

myecllipse+tomact下运行JFinal出错求解答

问题描述 严重:NullcomponentCatalina:type=JspMonitor,name=jsp,WebModule=//localhost/ld,J2EEApplication=none,J2EEServer=none2013-12-216:04:18org.apache.catalina.startup.HostConfigdeployDirectory严重:Errordeployingwebapplicationdirectoryldjava.lang.UnsupportedC

spark 启动worker时出错,求解答

问题描述 lin@lin-Wenxiang-E520:/opt/data01/spark-1.3.0-bin-2.6.0-cdh5.4.0$sbin/start-slave.shstartingorg.apache.spark.deploy.worker.Worker,loggingto/opt/data01/spark-1.3.0-bin-2.6.0-cdh5.4.0/sbin/../logs/spark-lin-org.apache.spark.deploy.worker.Worker--l

c语言问题,编译出错,急求解答

问题描述 c语言问题,编译出错,急求解答 编译时显示 error c2046:illegal case error c2047:illegal default 解决方案 不是break的问题,是大括号的问题, switch(a) { case 1: /*do your some thing*/ break; case 2: /*do your some thing*/ break; default: /*do your something*/ } 解决方案二: switch后面应该有一个大括号,