ตัวอย่างโค้ด
<?php
function repeated_sub($val_1, $val_2) {
if ($val_1 % $val_2 == 0) {
return floor((int)$val_1 / $val_2);
}
return floor(((int)$val_1 / $val_2) + repeated_sub($val_2, $val_1 % $val_2));
}
$val_1 = 1000;
$val_2 = 189;
echo "The repeated subtraction results in " . repeated_sub($val_1, $val_2);
?>
ผลลัพธ์
The repeated subtraction results in 18
คำอธิบาย
ฟังก์ชันนี้คำนวณผลรวมของ Quotients ใน Euclidean Algorithm (GCD Process):
- 1000 ÷ 189 = 5 เหลือ 55
- 189 ÷ 55 = 3 เหลือ 24
- 55 ÷ 24 = 2 เหลือ 7
- 24 ÷ 7 = 3 เหลือ 3
- 7 ÷ 3 = 2 เหลือ 1
- 3 ÷ 1 = 3 เหลือ 0
ผลรวม: 5 + 3 + 2 + 3 + 2 + 3 = 18
โค้ด Iterative Version (ดีกว่า Recursive)
<?php
function repeated_sub_iterative($a, $b) {
$sum = 0;
while ($b != 0) {
$sum += (int)($a / $b);
$remainder = $a % $b;
$a = $b;
$b = $remainder;
}
return $sum;
}
echo repeated_sub_iterative(1000, 189); // 18
?>
ประโยชน์
- เกี่ยวข้องกับ Euclidean Algorithm หา GCD
- ใช้ใน Number Theory, Cryptography
- Iterative Version ป้องกัน Stack Overflow