1. <?php
    2. class Solution {
    3. public function divide1($dividend, $divisor) {
    4. $sign = 1;
    5. if (($dividend < 0 && $divisor > 0) || ($dividend > 0 && $divisor < 0)) {
    6. $sign = -1;
    7. }
    8. $newDividend = abs($dividend);
    9. $newDivisor = abs($divisor);
    10. if ($newDividend < $newDivisor) return 0;
    11. $sum = $newDivisor;
    12. $multi = 1;
    13. while($sum + $sum < $newDividend) {
    14. $sum += $sum;
    15. $multi += $multi;
    16. }
    17. $data = $multi + $this->divide1($newDividend - $sum, $newDivisor);
    18. $num = $sign < 1 ? 0 - $data : $data;
    19. if ($num > pow(2, 31) - 1) return pow(2, 31) - 1;
    20. if ($num > pow(2, 31)) return pow(-2, 31);
    21. return $num;
    22. }
    23. public function divide2($dd, $dr) {
    24. $sign = 1;
    25. if (($dd < 0 && $dr > 0) || ($dd > 0 && $dr < 0)) {
    26. $sign = -1;
    27. }
    28. $dd = abs($dd);
    29. $dr = abs($dr);
    30. $multi = 0;
    31. while ($dd - $dr > 0) {
    32. $dd = $dd - $dr;
    33. $multi++;
    34. }
    35. return [$multi, $dd];
    36. }
    37. }
    38. $cls = new Solution();
    39. $r = $cls->divide1(10, 3);
    40. print_r($r);