Ví dụ
<?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;
print_r("The repeated subtraction results in ");
echo repeated_sub($val_1, $val_2);
?>
Kết quả
The repeated subtraction results in 18
Giải thích
Hàm repeated_sub đệ quy: nếu val_1 chia hết val_2, trả về thương (floor). Ngược lại, trả về thương + gọi đệ quy với (val_2, val_1 % val_2). Đây thực chất là thuật toán Euclid tìm GCD (ước chung lớn nhất) nhưng tính tổng các thương. Với 1000 và 189: 1000=5×189+55, 189=3×55+24, 55=2×24+7, 24=3×7+3, 7=2×3+1, 3=3×1+0. Tổng thương: 5+3+2+3+2+3=18.