簡體   English   中英

我該如何解決這個數字加倍和減半的問題?

[英]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;
}

您需要在 session 中保持“方向”。

將乘數保持為 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;
}

您需要存儲和檢查當前方向(上/下),工作代碼將是

<?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'];

您的代碼幾乎就在那里,您只需要存儲要乘以的數字並檢查它,一切都會好起來的。

基本思想是將乘數也存儲為 session 變量。 每當您達到 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'];
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM