Factorielle de la méthode récursive ou itérative? (Java)

J'ai été faire mon chemin à travers le projet Euler, et je suis tombé sur une combinaison de problème. Combinaison logique de moyens de travail hors factorielles. Donc, j'ai décidé de créer une méthode factorielle. Et puis, je suis tombé sur un problème depuis que j'ai pu assez facilement utiliser à la fois l'itération et la récursivité pour ce faire, laquelle dois-je aller? J'ai rapidement écrit 2 méthodes itératives:

public static long factorial(int num) {
        long result = 1;
        if(num == 0) {
            return 1;
        }
        else {
            for(int i = 2; i <= num; i++) {
                result *= i;
            }
            return result;
        }

et récursive:

public static long factorial(int num) {
        if(num == 0) {
            return 1;
        }
        else {
            return num * factorial(num - 1);
        }
    }

Si je suis (évidemment) en parlant de la vitesse et de fonctionnalité, qui dois-je utiliser? Et, en général, est l'une des techniques généralement mieux que les autres (donc, si je viens à travers ce choix plus tard, que dois-je aller pour)?

double possible de la récursivité Est toujours plus rapide que la boucle?
parce qu'avec le faible nombre d'-je traiter et en raison du fait que je ne l'appel à la méthode une fois ou deux fois, je ne remarque pas la différence. Ce que je veux dire c'est que si j'utilise cette méthode des charges et des charges de temps, ou plus compliqué méthodes que peuvent utiliser les deux techniques.
Pourquoi n'essayez-vous pas à la fois et de voir laquelle est la plus rapide? Aussi, vous n'avez pas besoin d'aller loin que de vérifier si num == 0, si num == 1 ensuite, vous pouvez revenir 1, pourquoi faire un extra itération/appel de la fonction
juste assez
La version itérative semble trop complexe. Il pourrait être réduit à int res = 1; for (int i = 2; i <= num; ++i) res *= i; return res;

OriginalL'auteur Bluefire | 2012-06-23