Vorrei iniziare con il calcolo 1/s
, che chiameremo a
.
Quindi utilizzare un ciclo for, in quanto, se si utilizza la ricorsione, in C, si può verificare un overflow dello stack.
Dato che questo è compito a casa non darò molto codice, ma, se inizi con un ciclo semplice, di 1, quindi continua ad aumentare, fino ad arrivare a 4, quindi puoi andare solo n volte.
Dato che dividerete sempre 1/s
e la divisione è costosa, è sufficiente una sola volta per eseguire le prestazioni.
Mi aspetto che, se ci lavori, puoi effettivamente trovare un modello che ti aiuterà a ottimizzare ulteriormente.
Potrebbe essere utile un articolo come questo: http://www.b-list.org/weblog/2006/nov/05/programming-tips-learn-optimization-strategies/.
Io presumo dal punto di vista della prestazione intendete che volete che sia veloce, indipendentemente dalla memoria utilizzata, btw.
È possibile notare che se si memorizzano nella cache i valori calcolati, ad ogni passaggio, è possibile riutilizzarli, anziché ripetere un calcolo costoso.
Personalmente farei 4-5 passi a mano, scrivendo le equazioni e i risultati di ogni passaggio, e vedere se qualsiasi schema emerge.
Aggiornamento:
GCC ha aggiunto ricorsione in coda, e non ho mai notato, in quanto cerco di limitare la ricorsione pesantemente in C, per abitudine. Ma questa risposta ha una rapida spiegazione delle diverse ottimizzazioni fatte da gcc in base al livello di ottimizzazione.
http://answers.yahoo.com/question/index?qid=20100511111152AAVHx6s
questo non è compito a casa perché la mia scuola è chiusa lo scorso luglio, ora sono seduto a casa e sto solo cercando di risolvere qualche problema –
Dal momento che molto probabilmente vorrai risolvere da solo, per il miglior effetto di apprendimento, penso è bello trattare questa domanda come se fosse compito a casa. – Svante