题目编号:Exp06-Basic05,GJBook3-10-06
题目名称:顺序检索
题目描述:编写程序,用递归方法在整数组中进行顺序检索。
输入:
第一行输入一个正整数n(0<n≤100),表示数组的元素个数;
第二行依次输入n个整数,作为数组的元素;
第三行输入待检索的关键字。
输出:
如果数组中含有关键字,则输出其首次出现的位置(下标值较小的位置)否则输出NULL。
样例1:
输入: 8 0 2 3 4 5 9 10 8 3
输出: 2
样例2:
输入: 8 0 2 3 4 5 9 10 8 6
输出: NULL
代码与从中获取的知识:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int a[1000];
void chazhao(int wanted,int i,int n)
{
if(a[i]==wanted) printf("%d",i);
else if(a[i]!=wanted&&i==n-1) printf("NULL");
else chazhao(wanted,i+1,n);//首先,函数是可以直接调用的,没有必须赋值给一个量什么的
//因为这就是void,并且可以没有return;由于if else if的选择性,可以只要上面成立下面不执行直接
//跳出递归了。 这与传统return结束递归不同。
}
int main()
{
int n,wanted,i=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
i=0; //之前一直运行不过是因为 i 没有归零
scanf("%d",&wanted);
chazhao(wanted,i,n);//有个和我思路一样的老哥这里没有用 i 直接就是一个0上去。NB炸了。
//当然这里用零,函数那里还是得用int i类似这种int型的。
return 0;
}