查找数组某个元素的下标

昨天写了个程序查找数组元素的下标。折腾了好久才弄出来,自己写出来总结一下。

如果要查找某个元素的下标,我们必须知道这个元素的值val是多少,然后要知道数组的首地址pst,和数组的总元素个数len。我们从右往左依次查询数组元素的值看是否等于val,如果等于val就返回该下标,不等于就继续查询。这里涉及到递归算法,实际就是如果查最后一个元素是否我们所查询的值,如果是我们输出len-1就为该值的下标,如果不是,我们把len减1再与val比较,依次递归查询。

函数实现如下:

int get_num(int *pst,int len,int val)
{
	int i = len-1;
	if(pst[i] == val)
		return i;
	else
	{
		len--;
		get_num(pst,len,val);
	}
}
这是查询下标的函数。我们再写个测试函数测试一下。

#include <stdio.h>

int main(void)
{
	int a[10] = {1,20,-5,8,0,-1,99,28,13,10};
	int i = 0;
	i = get_num(a,10,0);
	printf("数组元素0的下标是:%d\n",i);
}
输出结果

数组元素0的下标是4.

具体递归算法的实现并没有给出,相当复杂。

你可能感兴趣的:(c,递归)