// RecursiveBinarySearch.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#define N 9
int RecursiveBinarySearch(int A, int low, int high, int x);
int main()
{
int A[N];
int index = 0;
//Put
A[0] = 2;
A[1] = 6;
A[2] = 13;
A[3] = 21;
A[4] = 36;
A[5] = 47;
A[6] = 63;
A[7] = 81;
A[8] = 97;
printf("Elements in Array A\n");
while (index <= 8) {
printf("%d ", A[index]);
index++;
}
printf("\nLocation(index) of element 63\n");
printf("%d", RecursiveBinarySearch(A, 0, 8, 63));
return 0;
}
int RecursiveBinarySearch(int A, int low, int high, int x) {
//Base Condition
if (low > high)
return -1;
int mid = low + (high - low)/2;
if (x == A[mid])
return mid;
else if (x < A[mid])
return RecursiveBinarySearch(A, low, mid - 1, x);
else
return RecursiveBinarySearch(A, mid + 1, high, x);
}
Hier ist das erste Problem. Visual Studio sagt int A [9] Argumente vom Typ "int *" mit Parametern vom Typ "int" nicht kompatibel sindrekursive binäre Suche c
Hier zweites Problem. int mid Ausdruck muss Zeiger-Objekt-Typ haben
Ich weiß nicht gut über Zeiger, also möchte ich wissen, warum dieser Code nicht kompiliert werden kann und wie Zeiger in diesem Code verwenden.
Bitte nehmen Sie sich die Zeit, ein gutes Buch über C zu lesen. Ein Array ('int []') ist nicht dasselbe wie ein einzelnes 'int'. Was haben Sie erwartet, wenn Sie ein Array übergeben, bei dem Ihre Funktion nur a erwartet Wert? –
Ändern Sie die Deklaration von Argument A in "int * A" –
(mit Fehlermeldungen einschließlich Zeilennummern, bitte geben Sie diese Nummer in Ihrem Zitat. Wenn Sie auf Elemente aus Code in Ihrem Beitrag enthalten, ist es leichter zu lesen, wenn Sie sie machen Mit "Backticks" abheben: 'int A [9]', 'int mid'v) – greybeard