2013-05-29 3 views
-3

Мой код это будет это найти максимальное число из массива с помощью рекурсии, но не находит наибольшее количествоНахождение максимального элемента массива, используя рекурсию

#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

Где вы сравниваете числа из массива? Подсказка: нет. – NominSim

+2

Почему вы закомментировали 'return ar [n-1]> max? ar [n-1]: max; '? – johnchen902

+0

Для этого вам не нужна рекурсия, просто начните с первого элемента как «максимум» и сравните каждый элемент с макс. Если элемент, который вы сравниваете, больше, чем предыдущий, то это становится максимальным до конца. Используйте for-loop, начиная с 1, и переходите к концу массива. –

ответ

6

С этой конкретной линии

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

в

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

он всегда будет возвращен 5!

+0

Нет, это не будет ... Он передает 5 в качестве второго параметра. И 5! = 1! В конце концов, это в конце концов ударит n == 1, это правда! –

+0

есть еще одна небольшая ошибка .. она будет называть максимум дважды в конце, так что 28 будет напечатано дважды ... если он снова повторит эту строку –

+0

Я думаю, что printf в максимальной функции был предназначен только для целей отладки. – 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); 
} 
Смежные вопросы