En optimisant du code récemment, nous avons fini par effectuer ce que je pense être un "type" de mémoiation mais je ne suis pas sûr que nous devrions l'appeler ainsi. Le pseudo-code ci-dessous n'est pas l'algorithme réel (puisque nous avons peu besoin de factoriels dans notre application, et l'affichage de ce code est une infraction de tir) mais cela devrait être suffisant pour expliquer ma question. Ce fut l'original:Est-ce considéré comme une mémoisation?
def factorial (n):
if n == 1 return 1
return n * factorial (n-1)
assez simple, mais nous avons ajouté des points fixes de sorte qu'un grand nombre de calculs pourraient être évités pour un plus grand nombre, quelque chose comme:
def factorial (n):
if n == 1 return 1
if n == 10 return 3628800
if n == 20 return 2432902008176640000
if n == 30 return 265252859812191058636308480000000
if n == 40 return 815915283247897734345611269596115894272000000000
# And so on.
return n * factorial (n-1)
Ceci, bien sûr, signifiait que 12!
a été calculé comme 12 * 11 * 3628800
plutôt que le moins efficace 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
.
Mais je me demande si nous devrions inviterons cette mémoïsation puisque cela semble être définie comme souvenir résultats passés de calculs et de les utiliser. C'est plus sur les calculs codés en dur (ne pas se souvenir) et en utilisant cette information. Y a-t-il un nom propre à ce processus ou pouvons-nous affirmer que la memoisation ne s'applique pas seulement aux calculs effectués à l'exécution, mais aussi à ceux de la compilation et même à ceux effectués dans ma tête avant même de commencer écrire le code?
Oui. C'est une sorte de mémo. Que devez-vous savoir de plus? –
_C'est ce que j'ai besoin de savoir. Cela ne colle pas avec l'article de Wikipédia qui stipule spécifiquement: 'Une fonction mémoisée 'se souvient' des résultats correspondant à un ensemble d'entrées spécifiques. Les appels subséquents avec des entrées mémorisées renvoient le résultat mémorisé plutôt que de le recalculer, ... '. Je pensais qu'il pourrait y avoir un terme différent pour le cas où il ne se souvient pas, mais à la place il a codé en dur. – paxdiablo
Bon, j'ai deux réponses à ce jour, oui et non. Cela signifie que des références aux sources d'autorité vont probablement être nécessaires. Je vais laisser la question pendant quelques heures et voir ce qui entre. – paxdiablo