Dokonca aj Fibonacciho čísla súčet

Dokonca aj Fibonacciho čísla súčet
Vyskúšajte to na GfG Practice #practiceLinkDiv { display: none !important; }

Daný limit nájdi súčet všetkých párnych členov vo Fibonacciho postupnosti pod daným limitom.
Prvých pár termínov Fibonacciho čísla sú 11 2 3 5 8 13 21 34 55 89 144 233 ... (Párne čísla sú zvýraznené).
Príklady:  
 

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


 

Odporúčaná prax Dokonca aj Fibonacciho čísla súčet Skúste to!


Jednoduchým riešením je iterovať cez všetky Fibonacciho čísla, zatiaľ čo ďalšie číslo je menšie alebo rovné danému limitu. Pre každé číslo skontrolujte, či je párne. Ak je číslo párne, pridajte ho k výsledku.
Efektívne riešenie je založené na nižšie uvedenom rekurzívny vzorec pre párne Fibonacciho čísla
 

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. 


Odkazovať toto viac podrobností vyššie uvedeného vzorca.
Takže pri iterácii cez Fibonacciho čísla generujeme iba párne Fibonacciho čísla. 
 

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>   

výstup:  
 

188 

Časová zložitosť: O(n)

Pomocný priestor: O(1)


 

Vytvoriť kvíz