Сложить возведенное в степень число со последующим на единицу больше

90
12 августа 2019, 08:30

Здравствуйте, как я могу выполнить такое?
1^1=1
1^1 + 2^2=5
1^1 + 2^2 + 3^3=31
1^1 + 2^2 + 3^3 + 4^4=284
...
1^1 + 2^2+ .. + n^n=?
Пробую как то так:

for ($x = 1; $x < 10; $x++)
{
    $y = $x-1;
    $o = $y-1;
    $u = bcpow($x, $x)+bcpow($y, $y);
    echo  "$o<sup>$o</sup>+$y<sup>$y</sup>+$x<sup>$x</sup>= ".$u."<br>";
}

В итоге выходит как то так:
-1^-1 + 0^0 + 1^1 = 2
0^0 +1^1 + 2^2 = 5
1^1 +2^2 + 3^3 = 31
2^2 +3^3 + 4^4 = 283
3^3 +4^4 + 5^5 = 3381
4^4 +5^5 + 6^6 = 49781
5^5 + 6^6 + 7^7 = 870199
6^6 + 7^7 + 8^8 = 17600759
7^7 + 8^8 + 9^9 = 404197705
В общем, как это можно сделать по человечески? Помогите, пожалуйста!
upd. функция из ответа leninel, только без регулярного и eval:

function f_nat_number ($n, $a = []) {
    if ($n == 0) {
        $terms = implode (' + ', array_reverse ($a));
        $sum = str_replace ('^', '**', $terms);
        echo  $terms;
        $sum = explode('+', $sum);
        foreach ($sum as &$key) {
            $key = explode('**', $key);
            $key = pow($key[0], $key[1]);
        }
        return  ' = ' .array_sum($sum).'<br/>';
    }
    else {
        $a [] = "{$n}^{$n}";
        return f_nat_number ($n - 1, $a);
    }
}
for ($n = 1; $n <= 10; $n++)
echo f_nat_number ($n);
Answer 1
<?php
function f ($n, $a = []) {
    if ($n == 0) {
        $e = implode (' + ', array_reverse ($a));
        return preg_replace ('#\^(\d+)#', '<sup>$1</sup>', $e) . ' = ' . eval ('return ' . str_replace ('^', '**', $e) . ';') . '<br/>';
    }
    else {
        $a [] = "{$n}^{$n}";
        return f ($n - 1, $a);
    }
}
for ($i = 1; $i <= 5; $i++)
    echo f ($i);
READ ALSO
Как вывести данные из базы в формате JSON [дубликат]

Как вывести данные из базы в формате JSON [дубликат]

На данный вопрос уже ответили:

99
Построить дерево из строк

Построить дерево из строк

Подскажите, пожалуйста, как построить дерево из строк? Имеется массив:

110
Перехватить адрес в joomla

Перехватить адрес в joomla

Нужно настроить работу роутера в джумла таким образом, что бы, если мы заходим по адресу siteru?iffjj=3 адрес в адресной строке сохранялся, не редиректило,...

114
Не корректные байты в xml

Не корректные байты в xml

При загрузке xml страницы в браузере выдает ошибку error on line 62164 at column 28: Input is not proper UTF-8, indicate encoding ! Bytes: 0x0F 0xE2 0x80 0x93

134