Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di xrwnis
    Registrato dal
    Apr 2008
    Messaggi
    42

    [C++]ricorsione su array

    Ciao a tutti! Ho scritto questa funzione ricorsiva per calcolare il massimo valore tra gli elementi di un array di lunghezza n. Funziona, ma volevo sapere se questo è l'unico modo per farlo oppure ne esiste un altro più corretto...grazie


    //max=a[i]

    codice:
    int maxarray(int a[],int i, int max,int n)
    {
     
        if (i>n)
           return max;
        else if (a[i]>max)   
           return maxarray(a,i+1,a[i],n);
        else
           return maxarray(a,i+1,max,n);
    }

  2. #2
    Io francamente avrei evitato la ricorsione, visto che l'iterazione è più efficiente e la funzione iterativa in questo caso è di più semplice comprensione e utilizzo.
    codice:
    int maxarray(int array[], size_t elemCount)
    {
        int max=array[0];
        for(unsigned int i=1;i<elemCount;i++)
        {
            if(max<array[i])
                max=array[1];
        }
        return max;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Trattandosi di C++ ti consiglio di utilizzare gli algoritmi standard:

    Codice PHP:
    //
    // Compiled and tested with:
    // i686-apple-darwin8-g++-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
    //
    // Compile command line:
    // $ g++ -Wall -ansi -pedantic main.cpp
    // 

    #include <iostream>
    #include <algorithm>

    int main (void){
        const 
    int aArray [] = {12345671};
        const 
    int aMax = *(std::max_element (aArrayaArray sizeof (aArray)/sizeof (aArray[0])));
        
    std::cout << aMax << std::endl;
        return 
    0;


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.