Mam problem z pewną rekurencyjna funkcją.
Ogólnie zadaniem kodu jest wyszukanie rozwiązania (sumy) dającą zadaną liczbę z podanego zbioru.
Jeśli znajdzie taką kombinację to zwraca mi te liczy, które składają się na sumę i kończy szukanie kolejnych kombinacji.
Teraz chciałem wywołać ją ponownie, ale najpierw usuwam te rekordy z tablicy, które zostały użyte i mam problem z błędami notice.
Gdy wywalę kod 77 - 81 to wszystko jest ok, ale wtedy będzie brał mi pod uwagę te same wartości a tego nie chce.
Wynikiem działania poniższego kodu jest:
Notice: Undefined variable: result in C:\xampp\htdocs\konkurs\index11.php on line 39 3, Notice: Undefined variable: result in C:\xampp\htdocs\konkurs\index11.php on line 39 Notice: Undefined offset: 2 in C:\xampp\htdocs\konkurs\index11.php on line 26 Notice: Undefined offset: 4 in C:\xampp\htdocs\konkurs\index11.php on line 26 4,
Wygląda to jak by php pamiętał pierwszą zadaną tablicę i miał gdzieś, że w kolejnym wywołaniu podaję mu już inną tablicę.
Macie pomysł jak to rozwiązać?
<?php function combine($array, $val, $from = 0) { for($i = $from;$i < $cnt;$i++) { if($level < $val ) { $result[] = $array[$i]; $from++; $level++; $level--; } else { $result[] = $array[$i]; $results[] = $result; } } return $results; } function search ($strings, $need) { for ($i = 1; $i <= $strings_count; $i++) { if ($need == $result) break; $combination = combine($strings, $i, 0); foreach ($combination as $tab) { $result = 0; foreach ($tab as $all) { $result += $all; $orders[] = $all; } if ($need == $result) { return $orders; break; } } } return NULL; } $result = 3989; $wynikowa_tab = search ( $orders, 3); if ($wynikowa_tab != NULL) { foreach ($wynikowa_tab as $tab) { } } $wynikowa_tab = search ( $orders, 4); if ($wynikowa_tab != NULL) { foreach ($wynikowa_tab as $tab) { } } ?>