Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> backtracking/recursion 
V
    Опции темы
Muerto
Дата 3.12.2010, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Пытался перевести то что сегодня писал на Java на php

Если не говорить о том что понятие overloading процедурному php не знакомо

Этот скрипт не возвращает верного ответа

Код

<?
function rec($arr, $n){
     return rec2(count($arr)-1, $arr, $n);
}

function rec2($i,$arr, $n){
print_r($arr); echo "-> $i / $n <br/>";
     $answer=false;
        if( ($i==0) && ($arr[$i]==$n) ) {
            $answer=true;
        }else if($i>0){
            $answer=(rec2($i-1, $arr, $n+$arr[$i]))||(rec2($i-1,$arr, $n-$arr[$i]));
        }

     return $answer;
}

$arr=array(2,3,6,8);
$n=-5;
echo rec($arr,$n)?"true":"false";
?>


Я пытался отследить, не пойму в чем дело...
Похоже php ведет себя иначе...
Цель алгорима понять если можно намутить 2-3+6-10 и получить n=-5
он проходит через все возможные варианты


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 3.12.2010, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Пару примеров
{2,4,6,10} ответ будет если -5 true -> 2-3+6-10
Если же {5,4,6,3} ответ будет если 11, false


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 3.12.2010, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Если есть желание помочь понять что тут не так но задача все же не ясна, дайте знать!


--------------------
user posted image
PM MAIL   Вверх
skyboy
Дата 3.12.2010, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



возьми простые входящие: $arr == array(1), $n == 1 и посмотри сам, почему функция возвращает false. для этого даже компьютер не нужен, достаточно только листа бумаги.
PM MAIL   Вверх
Muerto
Дата 3.12.2010, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Проблема решена, кривой пример дал =-(

Вот такая статья в блоге вышла  smile 

http://learn-php.ru/2010/12/03/php-recursi...82%D0%BE%D0%BC/

Это сообщение отредактировал(а) Muerto - 4.12.2010, 00:01


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.