Стоит задача реализовать последовательность чисел по условию 2 через 2, то есть числа должны идти в таком порядке: 0, 1, 4, 5, 8, 9, 12, 13, 16, 17… Для реализации массива в цикле используем увеличение на 4 и деление по модулю на 4
1 2 3 4 5 6 7 8 9 | $arr = []; for ($i = 0; $i < 20; $i = $i + 4) { if (!($i%4)) { $arr[] = $i; $arr[] = $i + 1; } } print_r($arr); |
Получаем массив:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Array ( [0] => 0 [1] => 1 [2] => 4 [3] => 5 [4] => 8 [5] => 9 [6] => 12 [7] => 13 [8] => 16 [9] => 17 ) |
Для определения любого числа из данной последовательности используем рекурсию
1 2 3 4 5 6 7 | function detectNum($n) { if ($n <= 0) { return in_array($n, [0, -3]); } $offset = $offset - 4; return detectNum($n); } |