2013-05-29 4 views
-3

Mon code est cela ce trouve nombre maximum de tableau en utilisant récursion mais il ne trouve pas le plus grand nombreTrouver l'élément maximal d'un tableau en utilisant récursion

#include <stdio.h> 

int maximum(int ar[], int n) 
{ 

    if (n == 1) { 
     return ar[0]; 

    } else { 
     int max = maximum(ar, n-1); 
     printf("Largest element : %d\n", max); 
     return 5; // return ar[n-1] > max ? ar[n-1] : max; 
    } 
} 

int main() 
{ 
    int array[5] = {5, 23, 28, 7, 1}; 
    printf("Maximum element of the array is: %d", maximum(array, 5)); 
    return 0; 
} 
+6

Où comparez-vous les nombres du tableau? Astuce: Vous n'êtes pas. – NominSim

+2

Pourquoi avez-vous commenté 'return ar [n-1]> max? ar [n-1]: max; '? – johnchen902

+0

Vous n'avez pas besoin de récursion pour cela, commencez simplement par le premier élément comme votre "max" et comparez chaque élément avec le maximum. Si l'élément que vous comparez est plus grand que le précédent, alors cela devient le maximum jusqu'à la fin. Utilisez un for-loop commençant à 1 et aller à la fin du tableau. –

Répondre

6

Avec cette ligne particulière

return 5; // return ar[n-1] > max ? ar[n-1] : max; 

dans

if (n == 1) { 
     return ar[0]; 

    } else { 
     int max = maximum(ar, n-1); 
     printf("Largest element : %d\n", max); 
     return 5; // return ar[n-1] > max ? ar[n-1] : max; 
    } 
} 

il reviendra toujours 5!

+0

Non, ce ne sera pas ... Il passe 5 en second paramètre. Et 5! = 1! À la fin, il touchera finalement n == 1, c'est vrai! –

+0

il y a un autre petit bug .. il appellera maximum deux fois à la fin, de sorte que 28 est imprimé deux fois ... s'il commente à nouveau dans cette ligne –

+0

Je pense que le printf dans la fonction maximum était juste pour des buts de débogage. – drescherjm

-4
#include<stdio.h> 
void main() 
{ 
    int pin[10]={2,4,6,34,56,54,34,23,1,10},i,max,k; 

    max=pin[0]; 
    for(i=0;i<10;i++) 
    { 
     if(pin[i]>=max) 
     { 
      max=pin[i]; 
      k=i; 
     } 
    } 
    printf("The max number of the array is: %d and it is in %d position of the array\n",max,k+1); 
} 
Questions connexes