Как составить рекурсию по возрастанию? Всем привет, подскажите как составить рекурсию из массива, в которой значения по возрастанию, пример: $arr = [1, 2, 3]; Должно получиться следующее1 1 2 1 3 1 2 3 2 2 3 3 Уверен, что задача решается элементарной рекурсией, но что-то у меня не хватает на это мозгов. На входе функция должна принимать одномерный массив ['a', 'b', 'c'], данные на выходе должны идти с таким же порядком как и в массиве, т.е. a, ab, abc, ac, b, bc, c
Для решения данной задачи можно использовать следующую рекурсивную функцию на PHP:
function generateSubsequences($arr, $start = 0, $subsequence = '') { if ($start == count($arr)) { echo $subsequence.PHP_EOL; return; } generateSubsequences($arr, $start + 1, $subsequence); // не включаем текущий элемент generateSubsequences($arr, $start + 1, $subsequence.$arr[$start]); // включаем текущий элемент } $arr = ['a', 'b', 'c']; generateSubsequences($arr);
Эта функция генерирует все возможные подпоследовательности массива $arr, начиная с индекса $start. При каждом рекурсивном вызове функции проверяется, нужно ли включать текущий элемент в подпоследовательность или нет.
Для решения данной задачи можно использовать следующую рекурсивную функцию на PHP:
function generateSubsequences($arr, $start = 0, $subsequence = '') {if ($start == count($arr)) {
echo $subsequence.PHP_EOL;
return;
}
generateSubsequences($arr, $start + 1, $subsequence); // не включаем текущий элемент
generateSubsequences($arr, $start + 1, $subsequence.$arr[$start]); // включаем текущий элемент
}
$arr = ['a', 'b', 'c'];
generateSubsequences($arr);
Эта функция генерирует все возможные подпоследовательности массива $arr, начиная с индекса $start. При каждом рекурсивном вызове функции проверяется, нужно ли включать текущий элемент в подпоследовательность или нет.