以下に示すコードは正常に動作します。if 句内で見つかった要素の位置を出力して終了します。要素が見つからない場合、関数は最大まで実行され、要素が見つからなかったことを示すために呼び出し元の関数に 0 を返します。
ただし、見つかった要素の位置を出力するのではなく、呼び出し元の関数に返すことを考えていました。位置を返すと、呼び出し元の関数ではなく、関数の以前のインスタンスに戻るだけなので、私は打たれました。これを達成する方法は?
#include <stdio.h>
#include <stdlib.h>
int RLinearSearch(int A[],int n,int key)
{
if(n<1)
return 0;
else
{
RLinearSearch(A,n-1,key);
if(A[n-1]==key)
{
printf("found %d at %d",key,n);
exit(0);
}
}
return 0;
}
int main(void)
{
int A[5]={23,41,22,15,32}; // Array Of 5 Elements
int pos,n=5;
pos=RLinearSearch(A,n,23);
if(pos==0)
printf("Not found");
return 0;
}