¿Cómo puedes encontrar el valor mínimo en una matriz usando recursión?

Tengo que escribir un código C que encuentre el valor más pequeño en una matriz utilizando la recursión. Ya lo he hecho usando el bucle for, pero la recursión es más complicada. ¿¿Alguien me puede ayudar??

Aquí está el código simple para encontrar el valor mínimo usando la recursión,

int rec(int a[],int n) { int min; if(n==1) return a[0]; else { min=rec(a,n-1); if(min 
  • El mínimo de una matriz de un solo elemento es ese único elemento (caso base o la condición de terminación).

  • El mínimo de una matriz es el mínimo de [el primer elemento, el mínimo del rest (excluyendo el primer elemento)]

 #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; } 

Después de aceptar la respuesta.

A continuación se muestra una solución recursiva que no mastica la stack. Estime la profundidad máxima de stack en O (ln2 (n)). Otras soluciones parecen que la profundidad máxima de stack es 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; } 

Respondidas después de 9 horas, podemos asumir que la fecha de vencimiento de la tarea es pasada.

  1. Consideremos que el primer elemento de la matriz es mínimo.
  2. Llame a la función pasando la dirección base de la matriz y el número de elementos.
  3. Verifique que cualquier otro número sea menor que el valor mínimo, si es así, asigne ese valor al mínimo.
  4. ¡Por cada iteración, incremente la dirección de la matriz y disminuya el número de elementos!

Prueba este código

 #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; }