0
我在PHP中的遞歸函數有問題。我的功能的目的是比較一個IP與一系列的IP。下面是兩個變量我的數據模型:PHP中的遞歸函數
Array
(
[0] => 150
[1] => 2
[2] => 0
[3] => 155
)
Array
(
[0] => Array
(
[0] => 150
[1] => 26
[2] => 0
[3] => 0
)
[1] => Array
(
[0] => 150
[1] => 100
[2] => 255
[3] => 255
)
)
我知道迭代方法很可能是更好的,但它只是用於訓練recursives方法。 因此,這裏是我的代碼:
function checkRangeIp($ip_array, $range_ip_array, $recur_it = 0) {
if ($recur_it == 4)
return false;
$nb1 = $ip_array[$recur_it];
$nb2 = $range_ip_array[0][$recur_it];
$nb3 = $range_ip_array[1][$recur_it];
if ($nb1 < $nb2 || $nb1 > $nb3)
return true;
else
checkRangeIp($ip_array, $range_ip_array, $recur_it + 1);
}
我不知道爲什麼,但是當我測試我的功能它總是給我一種虛假的回報。
if (checkRangeIp($ip_array, $range_ip_array))
echo "TRUE\n";
else
echo "FALSE\n";
你有什麼想法嗎?謝謝。
如果你只是比較每個範圍對,那麼它不適用於遞歸。改爲循環。 – mario 2011-12-29 11:39:32
如果你的函數只有$ nb1 <$ nb2 || $ nb1> $ nb3'。第一個值「150」不是這種情況。所以不是返回,而是再次調用'checkRangeIp',但是你沒有返回那個調用的返回值,所以它不會返回任何東西。這就是說,即使這是固定的,我不認爲你的範圍檢查是正確的,這實際上不是一個遞歸解決方案的問題。 – 2011-12-29 11:40:43