我怎样才能解决这个数字加倍和减半的问题?
How can I solve this number doubling and halving problem?
我觉得问这个问题有点蠢,但我无法理解这个代码挑战。我必须初始化一个值为 1 的数字。然后我必须把这个数字加倍,直到它高于 1000。之后它会减半,直到它再次达到 1,反之亦然。
这就是我目前所拥有的。显然,它不起作用,因为一旦超过 1000 并减半,它就会满足再次翻倍的要求。我因为没有看到解决方案而感到很愚蠢。任何帮助将不胜感激。
session_start();
$getal = 1;
if(isset($_SESSION['getal'])){
if($_SESSION['getal'] <= 1000){
$_SESSION['getal'] *= 2;
}elseif ($_SESSION['getal'] > 1000){
$_SESSION['getal'] *= 0.5;
}
}
else{
$_SESSION['getal'] = $getal;
}
您需要存储并检查当前方向 (up/down),工作代码为
<?php
session_start();
$getal = 1;
if (!isset($_SESSION['dir'])) {
$_SESSION['dir'] = 'up';
}
if(isset($_SESSION['getal'])){
if ($_SESSION['getal'] <= 1000 && $_SESSION['dir'] === 'up') {
$_SESSION['getal'] *= 2;
$_SESSION['dir'] = 'up';
} else {
$_SESSION['getal'] *= 0.5;
$_SESSION['dir'] = 'down';
if ($_SESSION['getal'] == 1) {
$_SESSION['dir'] = 'up';
}
}
} else {
$_SESSION['getal'] = $getal;
}
echo $_SESSION['getal'];
echo $_SESSION['dir'];
你需要在会话中保持一个“方向”。
将乘数保持为 2,直到达到值 1000。
然后,将乘数更改为 .5,直到达到值 1(或小于 2)。
session_start();
$getal = 1;
if (isset($_SESSION['getal'])) {
if ($_SESSION['mult'] > 1 && $_SESSION['getal'] >= 1000) {
$_SESSION['mult'] = .5;
}
elseif ($_SESSION['getal'] < 2) {
$_SESSION['mult'] = 2;
}
$_SESSION['getal'] *= $_SESSION['mult'];
}
else{
$_SESSION['getal'] = $getal;
$_SESSION['mult'] = 2;
}
你的代码就差不多了,你只需要存储你乘以的数字并检查它,就可以了。
基本思想是将乘数也存储为会话变量。每当您达到 1 或超过 1,000 时,您就需要更改乘数。我使用三元语句来执行此操作,因为它只是分配一个变量值(这是三元语句的用途),但是 if/then 也可以。
<?php
session_start();
if (isset($_SESSION['getal'])) {
//the math
$_SESSION['getal'] *= $_SESSION['multiplier'];
//set the multiplier for the next iteration
$_SESSION['multiplier'] = $_SESSION['getal'] > 1000 ? .5 : ($_SESSION['getal'] <= 1 ? 2 : $_SESSION['multiplier']);
}
else {
//initialize
$_SESSION['getal'] = 1;
$_SESSION['multiplier'] = 2;
}
echo $_SESSION['getal'];
?>
我觉得问这个问题有点蠢,但我无法理解这个代码挑战。我必须初始化一个值为 1 的数字。然后我必须把这个数字加倍,直到它高于 1000。之后它会减半,直到它再次达到 1,反之亦然。
这就是我目前所拥有的。显然,它不起作用,因为一旦超过 1000 并减半,它就会满足再次翻倍的要求。我因为没有看到解决方案而感到很愚蠢。任何帮助将不胜感激。
session_start();
$getal = 1;
if(isset($_SESSION['getal'])){
if($_SESSION['getal'] <= 1000){
$_SESSION['getal'] *= 2;
}elseif ($_SESSION['getal'] > 1000){
$_SESSION['getal'] *= 0.5;
}
}
else{
$_SESSION['getal'] = $getal;
}
您需要存储并检查当前方向 (up/down),工作代码为
<?php
session_start();
$getal = 1;
if (!isset($_SESSION['dir'])) {
$_SESSION['dir'] = 'up';
}
if(isset($_SESSION['getal'])){
if ($_SESSION['getal'] <= 1000 && $_SESSION['dir'] === 'up') {
$_SESSION['getal'] *= 2;
$_SESSION['dir'] = 'up';
} else {
$_SESSION['getal'] *= 0.5;
$_SESSION['dir'] = 'down';
if ($_SESSION['getal'] == 1) {
$_SESSION['dir'] = 'up';
}
}
} else {
$_SESSION['getal'] = $getal;
}
echo $_SESSION['getal'];
echo $_SESSION['dir'];
你需要在会话中保持一个“方向”。
将乘数保持为 2,直到达到值 1000。 然后,将乘数更改为 .5,直到达到值 1(或小于 2)。
session_start();
$getal = 1;
if (isset($_SESSION['getal'])) {
if ($_SESSION['mult'] > 1 && $_SESSION['getal'] >= 1000) {
$_SESSION['mult'] = .5;
}
elseif ($_SESSION['getal'] < 2) {
$_SESSION['mult'] = 2;
}
$_SESSION['getal'] *= $_SESSION['mult'];
}
else{
$_SESSION['getal'] = $getal;
$_SESSION['mult'] = 2;
}
你的代码就差不多了,你只需要存储你乘以的数字并检查它,就可以了。
基本思想是将乘数也存储为会话变量。每当您达到 1 或超过 1,000 时,您就需要更改乘数。我使用三元语句来执行此操作,因为它只是分配一个变量值(这是三元语句的用途),但是 if/then 也可以。
<?php
session_start();
if (isset($_SESSION['getal'])) {
//the math
$_SESSION['getal'] *= $_SESSION['multiplier'];
//set the multiplier for the next iteration
$_SESSION['multiplier'] = $_SESSION['getal'] > 1000 ? .5 : ($_SESSION['getal'] <= 1 ? 2 : $_SESSION['multiplier']);
}
else {
//initialize
$_SESSION['getal'] = 1;
$_SESSION['multiplier'] = 2;
}
echo $_SESSION['getal'];
?>