Как условно выполнить математику в цикле? - PullRequest
0 голосов
/ 25 июня 2018

Я хочу напечатать серию условно измененных чисел, используя цикл.

Логика заключается в том, что нечетные вхождения печатаются без изменений, но четные вхождения возводятся в квадрат (умножаются на себя).

for ($i=1; $i < 6 ; $i++) { 
    echo $i;
    for ($j=1; $j==$i ; $j++) { 
        echo ($j+1) * ($j+1);
    }
    echo " ";
}

Приведенный выше код печатает: 14 2 3 4 5.

Мой желаемый результат (если итерация от 1 до 6):

//    unmodified
//    ↓   ↓    ↓
      1 4 3 16 5 36
//      ↑   ↑↑   ↑↑
//      squared (2, 4, and 6)

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Другой способ сделать это с помощью %

<?php
$result = [];
for ($i=1; $i < 6 ; $i++) { 
    if($i%2==0){
        $result[] = pow($i,2);
    }else{
        $result[] = $i;
    }
}
echo implode(' ', $result);
?>

Вывод программы

1 4 3 16 5

DEMO: https://eval.in/1027936

0 голосов
/ 25 июня 2018
<?php

for($i=1; $i<=6; $i++)
    echo $i&1 ? $i : $i*$i , ' ';

Поскольку вы можете определить n-й член, мы могли бы написать функцию для получения n-го числа:

function ajeet_number($n) {
    return $n&1 ? $n : $n*$n;
}

И использовать это в цикле:

for($i=1; $i<=6; $i++)
    echo ajeet_number($i) . ' ';

Или примените эту функцию к диапазону чисел:

$s = array_map('ajeet_number', range(1,6));
echo implode(' ', $s);

Каждый вывод выше аналогичен:

1 4 3 16 5 36 

Ссылка: Проверка, является ли число нечетным или четным

0 голосов
/ 25 июня 2018

Вам нужно начать с 1 и добавлять 2 каждый раз в цикле.Четные элементы - это квадраты числа после этого числа.Итак:

for ($i = 1; $i < 6; $i += 2) {
    echo $i . " " . (($i+1) * ($i+1)) . " ";
}

Вам не нужен внутренний цикл.

...