@Aharamis
Le problème ici est que, comme SMTIII_NOCTURNE l'a dit, tu calcules plusieurs fois les mêmes termes. Fais une truc comme ça plutôt
valeurs = [0]*100;
def f(n):
if valeurs[n] != 0:
return valeurs[n];
if n == 0:
value = 2;
elif n == 1:
value = 3;
elif n%2 == 0:
value = 2*f(n-1) + f(n-2);
else:
value = f(n-1) - f(n-2);
valeurs[n] = value;
return value;
print(f(90));
ton f(90) je le trouve en 2sc: 523894914996757936(après, est-ce que c'est le bon ...
)
En gros, pour pas recalculer plein de fois la même valeur, dès que tu la calcule, tu la stockes dans un tableau. Donc valeurs[i], si non nul, correspond à f(i). Comme ça tu calcules une seule fois chaque terme.
Message édité le 15 janvier 2019 à 21:36:57 par gorz94