首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 純遞增運算子實現四則運算:演算法思維練習

     編輯:PHP 相關知識

這是一個經典的程式設計練習:只使用 ++ 運算子實現加、減、乘、除。雖無實務效能價值,但能深入理解運算本質與遞迴思維。

加法:透過遞增累加

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
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved