| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2648 人关注过本帖
标题:求助大佬,帮我看下我的递归函数哪里错了
取消只看楼主 加入收藏
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:7 
求助大佬,帮我看下我的递归函数哪里错了
题目:在数组中查找元素x并返回其下标,要求从中点开始查找。
程序代码:
int findx3(int a[],int low,int high,int x)
//返回元素X下标,若X不存在,返回-1
//low初始值为下标最小值0,high初始值为下标最大值
{
    int mid;
    if(low>high) return -1;
          mid=(low+high)/2;
    if(a[mid]==x) return mid;
      findx3(a,low,mid-1,x);
      findx3(a,mid+1,high,x);

}
搜索更多相关主题的帖子: 返回 递归 mid 下标 int 
2019-11-04 22:19
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
老哥,这是老师给我们出的题目,必须这样查找....
2019-11-05 08:24
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
回复 2楼 zbjzbj
那我们老师应该是没说清楚前提,否则这样根本实现不了
2019-11-05 08:41
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
回复 5楼 zbjzbj
我们老师是直接让我在数组里这样找啊....没说要先排序
2019-11-05 11:42
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
回复 5楼 zbjzbj
我懂你什么意思了,不是我死脑筋啊,我们老师的意思就是让我们在一个无序数组里找,不能先排序。
2019-11-05 12:07
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
回复 6楼 rjsp
大佬,你的第二个函数会报错。
图片附件: 游客没有浏览图片的权限,请 登录注册

E:\C_program\递归调用\main.c|173|error: conflicting types for 'findx3'|
2019-11-05 14:38
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
回复 9楼 rjsp
大佬,你程序的思路应该是先对中点进行判断,若不是要找的数,再对左半部分进行查找,再找不到,最后对右半部进行查找。
可是如果没有要找的那个数的话,你程序里并没有对这个情况进行判断并返回-1。
还有index什么时候会等于-1?毕竟你函数里并没有return -1呀。
2019-11-05 15:01
丶随风飘扬
Rank: 2
等 级:论坛游民
帖 子:38
专家分:20
注 册:2019-11-1
收藏
得分:0 
回复 9楼 rjsp
这是我根据你的提示写的代码,我自己试了一下,设了数组a有五个数1 5 6 9 3。要查找9的下标,当9的下标是0,1,2的时候就能找到,9的下标是4,5的时候就找不到,也不会返回-1.
程序代码:
int findx4(int a[],int n,int x)
{
    if(a[n/2]==x)
        return n/2;
    size_t index = findx4(a,n/2,x);
    if(index!=-1)
        return index;
    return findx4(a+n/2+1,n-n/2-1,x);
}

2019-11-05 15:14
快速回复:求助大佬,帮我看下我的递归函数哪里错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018776 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved