How to calculate the sum of all Fibonacci numbers between two left and right indices in PHP

1 Answer

0 votes
// Example: left = 2, right = 8
// Explanation: F(2) + F(3) + F(4) + F(5) + F(6) + F(7) + F(8) = 1 + 2 + 3 + 5 + 8 + 13 + 21 = 53

// Function to compute Fibonacci numbers up to n
function fibonacci(int $n): int {
    if ($n === 0) return 0;
    if ($n === 1) return 1;

    $prev = 0;
    $curr = 1;

    for ($i = 2; $i <= $n; $i++) {
        $next = $prev + $curr;
        $prev = $curr;
        $curr = $next;
    }

    return $curr;
}

// Function to calculate sum of Fibonacci numbers from index L to R (inclusive)
function sumFibonacciRange(int $L, int $R): int {
    // If the range is invalid (e.g., L > R), return 0
    if ($L > $R) return 0;

    /*
      Mathematical identity:
      Sum(F_L + F_(L+1) + ... + F_R) = F_(R+2) - F_(L+1)

      Explanation:
      - The sum of the first n Fibonacci numbers is F_(n+2) - 1.
      - So, the sum from F_L to F_R can be derived by subtracting:
          (sum of first R terms) - (sum of first (L-1) terms)
        = (F_(R+2) - 1) - (F_(L+1) - 1)
        = F_(R+2) - F_(L+1)
    */

    return fibonacci($R + 2) - fibonacci($L + 1);
}

// Main program
$left = 2;
$right = 8;

$result = sumFibonacciRange($left, $right);

echo "Sum of Fibonacci numbers from index $left to $right = $result\n";



/*
run:

Sum of Fibonacci numbers from index 2 to 8 = 53

*/

 



answered Nov 23, 2025 by avibootz
...