1. 程式人生 > >『PHP學習筆記』系列一:利用for迴圈解決過路口問題

『PHP學習筆記』系列一:利用for迴圈解決過路口問題

過路口問題:
假設某人有100,000現金。每經過一次路口需要進行一次交費。交費規則為當他現金大於50,000時每次需要交5%如果現金小於等於50,000時每次交5,000。請寫一程式計算此人可以經過多少次這個路口。

解題思路:

此題最重要的其實就是思路和邏輯,程式碼實現其實很簡單,這裡我用了兩個同級的for迴圈。

  1. 首先,當現金數大於50,000時,每次通過都要在原本的基礎上減去5%,即:$i = $i - $i * 0.05 或 $i = $i * 0.95,直到現金數$i不再大於50,000為止;
  2. 然後,當現金數小於50,000時,每次通過減5000就很簡單了,即:$j = $j -5000,注意在第二個for迴圈中中要同時設定上限和下限,如果沒有設定下限就成了死迴圈,這裡可以用:$j >= 0 && $j <= 50000實現(當然 $j >= 5000 也可)。

程式碼實現:

<?php
$p = 0;
for ($i = 100000; $i > 50000; $i -= $i * 0.05) {
	$p++;
}
echo "當現金大於50000時通過了{$p}次<br/>";
$q = 0;
for ($j = $i; $j >= 0 && $j <= 50000; $j -= 5000) {
	$q++;
}
echo "當現金小於50000大於0時通過了{$q}次<br/>";
echo "總共可以通過 " . ($p + $q) . " 次&nbsp";
echo "還剩餘" . ($j + 5000) . "元錢";
?>

執行結果: