Solutions récursives et non récursives de la séquence de Fibonacci

É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;
}

 

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_44624536/article/details/115190814
conseillé
Classement