1

これを実行すると、番号が1以外の場合、つまり番号1に対して正しく実行される場合、常にNumber Not Foundが表示されます。

私によれば、すべてのテストケースが正しく実行されるため、これの問題は何かを知りたいです。

int search(int *a,int start,int end,int num)
{
  int mid;
  mid=(start+end)/2;
  if(start==end)
  {
    if(num==a[start])
      printf("Number Found");
    else
      printf("Number Not Found");
  }
  else
  {
    if(num>a[mid])
      search(&a[mid+1],mid+1,end,num);
    else
      search(&a[start],start,mid,num);
  }
}

int main()
{
  int arr[10]={1,2,3,4,5,6,7,8,9,10};
  search(arr,0,9,10);
}
4

1 に答える 1

2

配列に別のポインタを渡すべきではありません。代わりに、関心のある間隔の終了インデックスを既に変更しています。

于 2013-02-03T17:54:26.337 に答える