我被要求提供仅使用一个变量和一个仅用于循环的算法。不使用函数,数组或任何其他函数。只有一个输入是唯一的变量,一个用于循环,它应该显示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." ";
}
?>
但是你们都知道它不在一个变量中并且它使用了函数。即使它显示相同的结果,也不会被接受。
答案 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