İçindekiler [göster]
Divide And Conquer metodu, bir problemi daha küçük alt problemlere bölmek, küçük problemleri çözmek ve bunları birleştirmek anlamına gelmektedir.
Aşağıdaki ufak kod parçası, verilen bir sayının, verilen bir sayı kadar üssünü divide and conquer yöntemi ile alır.
Karmaşıklığı O(n)’dir.
For foreigners: The algorithm bellow calculates a number’s power using divide and conquer method. It’s complexity is O(n). Educational purposes only. There are less complex algorithms exist to do that (due to recursion overhead).
Kod Parçası
<?php
/*
Yazar: Umut Benzer
https://ubenzer.com/
Kullanım: power(TABAN,US);
*/
echo power(9,17); /* 9 üssü 17 */
function power($base, $exp) {
if($exp > 1) {
$b = round($exp / 2,0, PHP_ROUND_HALF_DOWN);
$c = $exp - $b;
$result_left = power($base, $b);
$result_right= power($base, $c);
return $result_left * $result_right;
} else {
return $base;
}
}
