Suma parzystych liczb Fibonacciego

Suma parzystych liczb Fibonacciego
Wypróbuj w praktyce GfG #practiceLinkDiv { display: none !important; }

Mając dany limit, znajdź sumę wszystkich wyrazów o parzystych wartościach w ciągu Fibonacciego poniżej podanego limitu.
Kilka pierwszych terminów Liczby Fibonacciego są 1 1 2 3 5 8 13 21 34 55 89 144 233 ... (Liczby parzyste są podświetlone).
Przykłady:  
 

Input : limit = 8 Output : 10 Explanation : 2 + 8 = 10 Input : limit = 400; Output : 188. Explanation : 2 + 8 + 34 + 144 = 188. 


 

Zalecana praktyka Suma parzystych liczb Fibonacciego Spróbuj!


Prostym rozwiązaniem jest iteracja po wszystkich liczbach Fibonacciego, podczas gdy następna liczba jest mniejsza lub równa podanemu limitowi. Dla każdej liczby sprawdź, czy jest parzysta. Jeśli liczba jest parzysta, dodaj ją do wyniku.
Skuteczne rozwiązanie opiera się na poniższym rekursywna formuła na parzyste liczby Fibonacciego
 

Recurrence for Even Fibonacci sequence is: EFn = 4EFn-1 + EFn-2 with seed values EF0 = 0 and EF1 = 2.   EFn   represents n'th term in Even Fibonacci sequence. 


Wspominać Ten więcej szczegółów powyższego wzoru.
Zatem podczas iteracji po liczbach Fibonacciego generujemy tylko parzyste liczby Fibonacciego. 
 

C++
   // Find the sum of all the even-valued terms in   // the Fibonacci sequence which do not exceed   // given limit.   #include       using     namespace     std  ;   // Returns sum of even Fibonacci numbers which are   // less than or equal to given limit.   int     evenFibSum  (  int     limit  )   {      if     (  limit      <     2  )      return     0  ;      // Initialize first two even Fibonacci numbers      // and their sum      long     long     int     ef1     =     0       ef2     =     2  ;      long     long     int     sum     =     ef1     +     ef2  ;      // calculating sum of even Fibonacci value      while     (  ef2      <=     limit  )      {      // get next even value of Fibonacci sequence      long     long     int     ef3     =     4  *  ef2     +     ef1  ;      // If we go beyond limit we break loop      if     (  ef3     >     limit  )      break  ;      // Move to next even number and update sum      ef1     =     ef2  ;      ef2     =     ef3  ;      sum     +=     ef2  ;      }      return     sum  ;   }   // Driver code   int     main  ()   {      int     limit     =     400  ;      cout      < <     evenFibSum  (  limit  );      return     0  ;   }   
Java
   // Find the sum of all the even-valued terms in   // the Fibonacci sequence which do not exceed   // given limit.   import     java.io.*  ;   class   GFG      {      // Returns sum of even Fibonacci numbers which are      // less than or equal to given limit.      static     int     evenFibSum  (  int     limit  )      {      if     (  limit      <     2  )      return     0  ;          // Initialize first two even Fibonacci numbers      // and their sum      long     ef1     =     0       ef2     =     2  ;      long     sum     =     ef1     +     ef2  ;          // calculating sum of even Fibonacci value      while     (  ef2      <=     limit  )      {      // get next even value of Fibonacci sequence      long     ef3     =     4     *     ef2     +     ef1  ;          // If we go beyond limit we break loop      if     (  ef3     >     limit  )      break  ;          // Move to next even number and update sum      ef1     =     ef2  ;      ef2     =     ef3  ;      sum     +=     ef2  ;      }          return  (  int  )     sum  ;      }          // Driver code      public     static     void     main     (  String  []     args  )         {      int     limit     =     400  ;      System  .  out  .  println  (  evenFibSum  (  limit  ));          }   }   // This code is contributed by vt_m.   
Python3
   # Find the sum of all the even-valued    # terms in the Fibonacci sequence which    # do not exceed given limit.   # Returns sum of even Fibonacci numbers which   # are less than or equal to given limit.   def   evenFibSum  (  limit  )   :   if   (  limit    <   2  )   :   return   0   # Initialize first two even Fibonacci numbers   # and their sum   ef1   =   0   ef2   =   2   sm  =   ef1   +   ef2   # calculating sum of even Fibonacci value   while   (  ef2    <=   limit  )   :   # get next even value of Fibonacci    # sequence   ef3   =   4   *   ef2   +   ef1   # If we go beyond limit we break loop   if   (  ef3   >   limit  )   :   break   # Move to next even number and update   # sum   ef1   =   ef2   ef2   =   ef3   sm   =   sm   +   ef2   return   sm   # Driver code   limit   =   400   print  (  evenFibSum  (  limit  ))   # This code is contributed by Nikita Tiwari.   
C#
   // C# program to Find the sum of all   // the even-valued terms in the    // Fibonacci sequence which do not   // exceed given limit.given limit.   using     System  ;   class     GFG     {          // Returns sum of even Fibonacci       // numbers which are less than or      // equal to given limit.      static     int     evenFibSum  (  int     limit  )      {      if     (  limit      <     2  )      return     0  ;          // Initialize first two even      // Fibonacci numbers and their sum      long     ef1     =     0       ef2     =     2  ;      long     sum     =     ef1     +     ef2  ;          // calculating sum of even       // Fibonacci value      while     (  ef2      <=     limit  )      {          // get next even value of       // Fibonacci sequence      long     ef3     =     4     *     ef2     +     ef1  ;          // If we go beyond limit      // we break loop      if     (  ef3     >     limit  )      break  ;          // Move to next even number      // and update sum      ef1     =     ef2  ;      ef2     =     ef3  ;      sum     +=     ef2  ;      }          return  (  int  )     sum  ;      }          // Driver code      public     static     void     Main     ()         {      int     limit     =     400  ;      Console  .  Write  (  evenFibSum  (  limit  ));          }   }   // This code is contributed by Nitin Mittal.   
PHP
      // Find the sum of all the    // even-valued terms in the    // Fibonacci sequence which    // do not exceed given limit.   // Returns sum of even Fibonacci   // numbers which are less than or    // equal to given limit.   function   evenFibSum  (  $limit  )   {   if   (  $limit    <   2  )   return   0  ;   // Initialize first two even    // Fibonacci numbers and their sum   $ef1   =   0  ;   $ef2   =   2  ;   $sum   =   $ef1   +   $ef2  ;   // calculating sum of   // even Fibonacci value   while   (  $ef2    <=   $limit  )   {   // get next even value of   // Fibonacci sequence   $ef3   =   4   *   $ef2   +   $ef1  ;   // If we go beyond limit   // we break loop   if   (  $ef3   >   $limit  )   break  ;   // Move to next even number   // and update sum   $ef1   =   $ef2  ;   $ef2   =   $ef3  ;   $sum   +=   $ef2  ;   }   return   $sum  ;   }   // Driver code   $limit   =   400  ;   echo  (  evenFibSum  (  $limit  ));   // This code is contributed by Ajit.   ?>   
JavaScript
    <  script  >   // Javascript program to find the sum of all the even-valued terms in   // the Fibonacci sequence which do not exceed   // given limit.      // Returns sum of even Fibonacci numbers which are      // less than or equal to given limit.      function     evenFibSum  (  limit  )      {      if     (  limit      <     2  )      return     0  ;          // Initialize first two even Fibonacci numbers      // and their sum      let     ef1     =     0       ef2     =     2  ;      let     sum     =     ef1     +     ef2  ;          // calculating sum of even Fibonacci value      while     (  ef2      <=     limit  )      {      // get next even value of Fibonacci sequence      let     ef3     =     4     *     ef2     +     ef1  ;          // If we go beyond limit we break loop      if     (  ef3     >     limit  )      break  ;          // Move to next even number and update sum      ef1     =     ef2  ;      ef2     =     ef3  ;      sum     +=     ef2  ;      }          return     sum  ;      }       // Function call          let     limit     =     400  ;      document  .  write  (  evenFibSum  (  limit  ));        <  /script>   

Wyjście :  
 

188 

Złożoność czasowa: NA)

Przestrzeń pomocnicza: O(1)


 

Utwórz quiz