Je dois écrire un code C qui trouve la plus petite valeur dans un tableau en utilisant la récursivité. Je l’ai déjà fait en utilisant la boucle for, mais la récursivité est plus délicate. Est-ce que quelqu’un peut m’aider??
Voici un code simple pour trouver la valeur minimale en utilisant la récursivité,
int rec(int a[],int n) { int min; if(n==1) return a[0]; else { min=rec(a,n-1); if(min
Le minimum d’un tableau d’élément unique est cet élément unique (cas de base ou condition de terminaison).
Le min d’un tableau est le minimum de [le premier élément, le minimum du rest (à l’exclusion du premier élément)]
#include int minimum(int *a_s, int *a_e, int candidate){ if(a_s == a_e) return candidate; return minimum(a_s+1, a_e, *a_s < candidate ? *a_s : candidate); } int main(void){ int array[] = { 1,3,-2,0,-1}; printf("%d ", minimum(array+1, &array[sizeof(array)/sizeof(*array)], *array)); return 0; }
Après accepter la réponse.
Vous trouverez ci-dessous une solution récursive qui ne détruit pas la stack. Estimez la profondeur maximale de la stack en O (ln2 (n)). D’autres solutions semblent indiquer que la profondeur maximale de la stack est O (n).
int ArrayMin(const int a[], size_t n) { if (n <= 1) { if (n < 0) return 0; // Handle degenerate ArrayMin( ,0) return a[0]; } size_t nhalf = n / 2; int left = ArrayMin(a, nhalf); int right = ArrayMin(&a[nhalf], n - nhalf); return left < right ? left : right; }
Répondu après 9 heures, nous pouvons supposer que la date d'échéance des devoirs est dépassée.
Essayez ce code-
#include int min; int arrfun(int *arr,int n) { if(n){ if(*arr < min) // check any no is less than minimum. min = *arr; // if yes assign it } else return min; // when n becomes 0 it returns the minimum element arrfun(++arr,--n); // recursive call } int main() { int arr[]={7,3,9,2,1,6}; min = arr[0]; // Taking first element is minimum printf("minimum is: %d\n",arrfun(arr,6)); // call the function by passing address and no of elements in array return 0; }