這是一個經典的程式設計練習:只使用 ++ 運算子實現加、減、乘、除。雖無實務效能價值,但能深入理解運算本質與遞迴思維。
function jiafa($a, $b) {
for ($i = 0; $i < $b; $i++) {
$a++;
}
return $a;
}
// jiafa(4, 2) => 6
邏輯:$a + $b 等同於 $a 遞增 $b 次。
function jianfa($a, $b) {
$c = 0;
while ($b != $a) {
$b++;
$c++;
}
return $c;
}
// jianfa(10, 3) => 7
邏輯:$a - $b = ?,讓 $b 遞增直到等於 $a,計數器 $c 即為差值。前提:$a > $b。
function chengfa($a, $b) {
$c = 0;
for ($j = 0; $j < $b; $j++) {
$c = jiafa($c, $a);
}
return $c;
}
// chengfa(9, 3) => 27
邏輯:$a × $b = $a + $a + ... ($b 次)。複用加法函式。
function chufa($d, $e) {
$k = 0;
$f = 0;
while ($f < $d) {
$k++;
$f = chengfa($e, $k);
}
return $k;
}
// chufa(16, 2) => 8
邏輯:$d ÷ $e = 最大的 $k 使得 $e × $k ≤ $d。整數除法,無條件捨去。
<?php
function jiafa($a, $b) {
for ($i = 0; $i < $b; $i++) $a++;
return $a;
}
function jianfa($a, $b) {
$c = 0;
while ($b != $a) { $b++; $c++; }
return $c;
}
function chengfa($a, $b) {
$c = 0;
for ($j = 0; $j < $b; $j++) $c = jiafa($c, $a);
return $c;
}
function chufa($d, $e) {
$k = 0; $f = 0;
while ($f < $d) { $k++; $f = chengfa($e, $k); }
return $k;
}
echo "4 + 2 = " . jiafa(4, 2) . "\n";
echo "10 - 3 = " . jianfa(10, 3) . "\n";
echo "9 × 3 = " . chengfa(9, 3) . "\n";
echo "16 ÷ 2 = " . chufa(16, 2) . "\n";
| 運算 | 時間複雜度 | 適用範圍 |
|---|---|---|
| 加法 | O(b) | 小整數 |
| 減法 | O(a-b) | a > b 的正整數 |
| 乘法 | O(a×b) | 極小整數 |
| 除法 | O(d×k) | 極小整數 |
⚠️ 僅供教學/面試練習,實際開發請直接使用 + - * / 運算子。
-- 或符號判斷a ^ b (不進位和) + (a & b) << 1 (進位),遞迴直到進位為 0