用C语言实现递归的顺序查找解决方法
用C语言实现递归的顺序查找
/*---------------顺序查找函数的调用(递归)---------------------*/
#include <stdio.h>
#define NUM 67 /*查找的数为67*/
#define MAXLEN 15
int seqsearch(int *, int, int);
main()
{
int n = 0;
int array[] = {23, 34, 56, 78, 67, 89 ,234, 456, 468, 790, 906, 985};
printf( "%d ",seqsearch(array, NUM, n));
}
int seqsearch(int *list, int searchnum, int n)
{
*(list + MAXLEN) = searchnum;
if (*(list + n) == searchnum)
return ((n < MAXLEN) ? n : -1);
else
seqsearch(list, searchnum, n++);
}
为什么编译之后没有答案,,,望高手指点
------解决方案--------------------
#include <stdio.h>
#define NUM 67 //查找67
#define MAXLEN 15
int seqsearch(int *, int, int);
main()
{
int n = 0;
int array[] = {23, 34, 56, 78, 67, 89 ,234, 456, 468, 790, 906, 985};
printf( "%d ",seqsearch(array, NUM, n));
}
int seqsearch(int *list, int searchnum, int n)
{
// *(list + MAXLEN) = searchnum;这一句没有起到任何作用,可以把它删除了
if (*(list + n) == searchnum)//充分利用指针作用,不错
return ((n < MAXLEN) ? n : -1);
else
return seqsearch(list, searchnum, n+1);//要用return 语句来返回
}
每次返回N都要加1
------解决方案--------------------
int seqsearch(int list[], int searchnum, int n)
{
// *(list + MAXLEN) = searchnum;这一句实际上是非法内存操作,删除
if(n==MAXLEN)return -1;//
if (*(list + n) == searchnum)return n;
return seqsearch(list, searchnum, n+1);
}
标兵是不能加在数组的后面一位的,只能用在前面
/*---------------顺序查找函数的调用(递归)---------------------*/
#include <stdio.h>
#define NUM 67 /*查找的数为67*/
#define MAXLEN 15
int seqsearch(int *, int, int);
main()
{
int n = 0;
int array[] = {23, 34, 56, 78, 67, 89 ,234, 456, 468, 790, 906, 985};
printf( "%d ",seqsearch(array, NUM, n));
}
int seqsearch(int *list, int searchnum, int n)
{
*(list + MAXLEN) = searchnum;
if (*(list + n) == searchnum)
return ((n < MAXLEN) ? n : -1);
else
seqsearch(list, searchnum, n++);
}
为什么编译之后没有答案,,,望高手指点
------解决方案--------------------
#include <stdio.h>
#define NUM 67 //查找67
#define MAXLEN 15
int seqsearch(int *, int, int);
main()
{
int n = 0;
int array[] = {23, 34, 56, 78, 67, 89 ,234, 456, 468, 790, 906, 985};
printf( "%d ",seqsearch(array, NUM, n));
}
int seqsearch(int *list, int searchnum, int n)
{
// *(list + MAXLEN) = searchnum;这一句没有起到任何作用,可以把它删除了
if (*(list + n) == searchnum)//充分利用指针作用,不错
return ((n < MAXLEN) ? n : -1);
else
return seqsearch(list, searchnum, n+1);//要用return 语句来返回
}
每次返回N都要加1
------解决方案--------------------
int seqsearch(int list[], int searchnum, int n)
{
// *(list + MAXLEN) = searchnum;这一句实际上是非法内存操作,删除
if(n==MAXLEN)return -1;//
if (*(list + n) == searchnum)return n;
return seqsearch(list, searchnum, n+1);
}
标兵是不能加在数组的后面一位的,只能用在前面