一道简单递归题

题目编号: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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值