Je commencerais par le calcul 1/s
, que nous appellerons a
.
Ensuite, utilisez une boucle for, car, si vous utilisez la récursivité, en C, vous pouvez rencontrer un débordement de pile. Puisque ceci est un devoir, je ne donnerai pas beaucoup de code, mais, si vous commencez avec une simple boucle, de 1, alors continuez à l'augmenter, jusqu'à ce que vous obteniez 4, alors vous pouvez juste aller à n fois.
Puisque vous allez toujours diviser 1/s
et que la division est chère, le fait de le faire une seule fois vous aidera avec les performances.
Je m'attends à ce que vous trouviez un motif qui vous aidera à optimiser davantage.
Vous pouvez trouver un article comme celui-ci: http://www.b-list.org/weblog/2006/nov/05/programming-tips-learn-optimization-strategies/, pour être utile.
Je suppose qu'en termes de performances, vous voulez dire que vous voulez que ce soit rapide, quelle que soit la mémoire utilisée, btw.
Vous pouvez trouver que si vous mettez en cache les valeurs que vous avez calculées, à chaque étape, que vous pouvez les réutiliser, plutôt que de refaire un calcul coûteux.
Personnellement, je ferais 4-5 étapes à la main, en écrivant les équations et les résultats de chaque étape, et voir si un motif émerge.
Mise à jour:
GCC a ajouté récursion queue, et je ne remarqué, depuis que j'essaie de limiter fortement récursivité en C, par habitude. Mais cette réponse a une bonne explication rapide des différentes optimisations gcc basées sur le niveau d'optimisation.
http://answers.yahoo.com/question/index?qid=20100511111152AAVHx6s
ce n'est pas des devoirs parce que mon école est fermée en juillet dernier, maintenant je suis assis dans ma maison et j'essaie juste de résoudre un problème –
Puisque vous voudrez probablement résoudre ceci vous-même, pour le meilleur effet d'apprentissage, je pense il est bon de traiter cette question comme s'il s'agissait de devoirs. – Svante