Écrivez une fonction, entrez n et trouvez le nième terme de la séquence de Fibonacci (c'est-à-dire F (N)).
La séquence de Fibonacci est définie comme suit: F (0) = 0, F (1) = 1
F (N) = F (N-1) + F (N-2), où N> 1. La séquence de Fibonacci commence à partir de 0 et 1, et les nombres de Fibonacci suivants sont l'addition des deux nombres précédents Et sortent.
La réponse doit être modulo 1e9 + 7 (1000000007). Si le résultat initial du calcul est: 1000000008, veuillez renvoyer 1.
Méthode 1: (de manière récursive, car elle calculera à plusieurs reprises une valeur précédemment calculée, une surcharge inutile sera générée, voici donc une carte définie pour stocker la valeur calculée. Mais la méthode expirera toujours!)
public int fib(int n) {
Map<Integer,Integer> m=new HashMap<>();
if (n < 2)
return n;
if(!m.containsKey(n)){
m.put(n,(fib(n-1)+fib(n-2))%1000000007);
}
return m.get(n);
}
Deuxième méthode: non récursive
public int fib(int n) {
int constant=1000000007;
int fist=0;
int second=1;
int temp=0;
while(n-->0){
temp=(fist+second)%constant;
fist=second%constant;
second=temp%constant;
}
return fist;
}