数字序列1 2 4 8 11 12 14 18仅使用一个变量,一个用于循环

时间:2017-09-06 03:25:28

标签: loops variables for-loop numbers

我被要求提供仅使用一个变量和一个仅用于循环的算法。不使用函数,数组或任何其他函数。只有一个输入是唯一的变量,一个用于循环,它应该显示1 2 4 8的数字序列...取决于输入值。您将在表单中输入值,然后在提交后,发布的数据将是唯一要操作的变量。

e.g。输入值为20,因此应显示

  

1 2 4 8 11 12 14 18

如果输入值为50,则应显示

  

1 2 4 8 11 12 14 18 21 22 24 28 31 32 34 38 41 42 44 48

我知道有similar question这样的localheinz已经被问过,但我认为它已经关闭了。

这是迄今为止我在php数学问题中遇到的最难的问题。请帮帮我。

得到这个工作的人给了我一个线索,这只是 For Loop 第3个元素中的等式问题,传统上是为递增而设计的/递减

这样的工作示例是这样的。 (感谢enter image description here

<?php 
$input = 20;
        $a = function ($n) {
            return 10 * floor($n  / 4);
        };
        $b = function ($n) {
            return 2 ** ($n  % 4);
        };
        for ($n = 0; $input >= $value = $a($n) + $b($n) ; ++$n){
            echo $value." ";      
        }
?>

但是你们都知道它不在一个变量中并且它使用了函数。即使它显示相同的结果,也不会被接受。

2 个答案:

答案 0 :(得分:2)

<?php
$input = 50;
for ($n = 1; $n <= $input; $n += $n % 5) {
    echo "$n ";
}

答案 1 :(得分:1)

如果$input不计入变量,那么这可能是一个解决方案

<?php
$input = 20;
for ($i = 0; (2 ** ($i % 4) + 10 * floor($i / 4)) <= $input; $i++) {
    echo (2 ** ($i % 4) + 10 * floor($i / 4))." ";
}
?>

没有floor功能:

<?php
$input = 20;
for ($i = 0; $i <= $input; $i++) {
    if ($i % 10 == 1 || $i % 10 == 2 || $i % 10 == 4 || $i % 10 == 8)
        echo $i." ";
}
?>

但是,必须在$i

旁边使用其他变量$input