Visualizzazione dei risultati da 1 a 9 su 9

Discussione: ricorsione c++

Visualizzazione discussione

  1. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Vabbè, quell'errore era banale.

    Il punto non era che il tuo codice non funziona. (a parte quello che secondo me è ub)
    Il punto è che ha side effects.
    Mantiene uno stato.

    Il risultato non dipende solo dai parametri passati

    Esempio:
    Supponiamo di trovarci in ambiente concorrente (questo ovviamente non è c++, ma un pseudolinguaggio):
    codice:
    double zero = 0.0;
    spawn {cout << media(p1, 4, zero) << endl;}
    spawn {cout << media(p2, 4, zero) << endl;}
    Supponendo di conoscere p1, p2 e che cout sia sincronizzato in modo da dare un output prevedibile (al più si scambia l'ordine delle righe),
    sai dirmi l'output?

    Il tuo codice è antieducativo. Inoltre mantenere uno stato esterno già di per sé va contro i principi della programmazione "funzionale".

    Aggiungo che mentre le mie due implementazioni (corrette a meno di un .voto) sono ottimizzabili in un ciclo in quanto ricorsive in coda (tail recursive), la tua non lo è e si mangerà lo stack.

    Insomma, ci sono molti buoni motivi per evitare un implementazione simile. Sicuramente un professore che cerca di insegnare a pensare ricorsivamente la considererebbe errata (a livello pratico).

    In sostanza la tua implementazione non da nessun vantaggio ma da molti problemi.
    La mia di certo non da vantaggi rispetto a un'implementazione nativa con un for, ma non da neanche problemi. (sarebbe trascurabile anche il "mangiarsi lo stack" a livello educativo, ma non il resto)
    Ultima modifica di Scara95; 25-04-2015 a 14:49
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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 © 2025 vBulletin Solutions, Inc. All rights reserved.