Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Peter, DEMBEL, YURIY  
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Рекурсивные функции
Рекурсивные функции
AlienДата: Ср, 26 Мая 2010, 20:46 | Сообщение # 1
NB не поддерживает рекурсивные функции?
Сделал рекурсивную функцию, в тестовом режиме все нормально, при компиляции NeoBook гнется и закрывается без предупреждения.
 
СообщениеNB не поддерживает рекурсивные функции?
Сделал рекурсивную функцию, в тестовом режиме все нормально, при компиляции NeoBook гнется и закрывается без предупреждения.

Автор - Alien
Дата добавления - 26 Мая 2010 в 20:46
Alex3AДата: Чт, 27 Мая 2010, 13:20 | Сообщение # 2
Друг клуба ММВ
При компиляции или после запуска скомпилированной проги?
Если последнее то.
Скорее дело не в поддержке рекурсивности а ты как програмер чего то накосячил, рекурсивность это вызов функции самой себя. Надо представлять что делает твой скрипт
в течении времени, при запуске в десинге, прога работает немного медленней чем после
компиляции, и то что успевало в десинге вполне может неуспевать после.
 
СообщениеПри компиляции или после запуска скомпилированной проги?
Если последнее то.
Скорее дело не в поддержке рекурсивности а ты как програмер чего то накосячил, рекурсивность это вызов функции самой себя. Надо представлять что делает твой скрипт
в течении времени, при запуске в десинге, прога работает немного медленней чем после
компиляции, и то что успевало в десинге вполне может неуспевать после.

Автор - Alex3A
Дата добавления - 27 Мая 2010 в 13:20
AlienДата: Чт, 27 Мая 2010, 14:11 | Сообщение # 3
NB выкидывает при нажатии "Компилировать". Довольно-таки простой пример рекурсивной функции:
Code
SetVar "[test]" "[test]+1"
If "[%1]" "<" "5"
    Call "test" "[test]"
Else
    AlertBox "Рекурсивная функция" "Работает! Маленький код только для теста."
EndIf

В режиме теста все работает прекрасно, никакого бесконечного цикла нет.
А вот при компиляции выкидывает, сначала зависает, в правом нижнем углу пишет что-то типа этого, потом закрывается:
Прикрепления: 1056038.jpg (2.1 Kb)
 
СообщениеNB выкидывает при нажатии "Компилировать". Довольно-таки простой пример рекурсивной функции:
Code
SetVar "[test]" "[test]+1"
If "[%1]" "<" "5"
    Call "test" "[test]"
Else
    AlertBox "Рекурсивная функция" "Работает! Маленький код только для теста."
EndIf

В режиме теста все работает прекрасно, никакого бесконечного цикла нет.
А вот при компиляции выкидывает, сначала зависает, в правом нижнем углу пишет что-то типа этого, потом закрывается:

Автор - Alien
Дата добавления - 27 Мая 2010 в 14:11
Alex3AДата: Чт, 27 Мая 2010, 15:48 | Сообщение # 4
Друг клуба ММВ
Я как то знаеш не разбираюсь в синтаксисе нб, и не могу определить где пределы твоей
функции, меня смущает что имя твоей функции совпадает с именем переменной глубины рекурсии, к чему ты добавляеш 1 к имени функции или к переменной.
 
СообщениеЯ как то знаеш не разбираюсь в синтаксисе нб, и не могу определить где пределы твоей
функции, меня смущает что имя твоей функции совпадает с именем переменной глубины рекурсии, к чему ты добавляеш 1 к имени функции или к переменной.

Автор - Alex3A
Дата добавления - 27 Мая 2010 в 15:48
PeterДата: Чт, 27 Мая 2010, 16:46 | Сообщение # 5
Админ NeoBook
Quote (Alien)
Довольно-таки простой пример рекурсивной функции:
Code

%)
Несмотря на то, что у меня большие сомнения в работоспособности указанной конструкции, не мешало бы приложить ещё и исходник самой функции "test" для проверки.
В принципе, связи между тем, что написано в скриптах NeoBook и процессом компилляции файла проекта нет никакой.
Я проверил: даже в таком (кастрированном) варианте всё компилится совершенно исправно.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Alien)
Довольно-таки простой пример рекурсивной функции:
Code

%)
Несмотря на то, что у меня большие сомнения в работоспособности указанной конструкции, не мешало бы приложить ещё и исходник самой функции "test" для проверки.
В принципе, связи между тем, что написано в скриптах NeoBook и процессом компилляции файла проекта нет никакой.
Я проверил: даже в таком (кастрированном) варианте всё компилится совершенно исправно.

Автор - Peter
Дата добавления - 27 Мая 2010 в 16:46
СергейДата: Чт, 27 Мая 2010, 16:49 | Сообщение # 6
Необукер
Alien,
Quote (Alien)
А вот при компиляции выкидывает, сначала зависает, в правом нижнем углу пишет что-то типа этого, потом закрывается:
Значит не поддерживает, я давно делал проект, и у меня в результате ошибки получилось рекурси, на 40% вылетало с ошибкой, я поковырялся и нашел что функция вызывает саму себя и при компиле не компилится, но с подпрограммами эта фишка работает, но возможно функция на НБ это не что другое чем просто функция в нашем понимании. Ведь не знаем как она присоединяется к проекту при компиляции, может это и не функция вовсе после компиля! Я имею ввиду функцию Call.
Я в НБ полный ламо, и толком сказать не могу. Подождем, что скажет гуру-Петр и просветит нас по этому сабжу. :)

Добавлено (27 Май 2010, 16:49)
---------------------------------------------
пока писал, Петр уже ответил :D

 
СообщениеAlien,
Quote (Alien)
А вот при компиляции выкидывает, сначала зависает, в правом нижнем углу пишет что-то типа этого, потом закрывается:
Значит не поддерживает, я давно делал проект, и у меня в результате ошибки получилось рекурси, на 40% вылетало с ошибкой, я поковырялся и нашел что функция вызывает саму себя и при компиле не компилится, но с подпрограммами эта фишка работает, но возможно функция на НБ это не что другое чем просто функция в нашем понимании. Ведь не знаем как она присоединяется к проекту при компиляции, может это и не функция вовсе после компиля! Я имею ввиду функцию Call.
Я в НБ полный ламо, и толком сказать не могу. Подождем, что скажет гуру-Петр и просветит нас по этому сабжу. :)

Добавлено (27 Май 2010, 16:49)
---------------------------------------------
пока писал, Петр уже ответил :D


Автор - Сергей
Дата добавления - 27 Мая 2010 в 16:49
СергейДата: Чт, 27 Мая 2010, 16:52 | Сообщение # 7
Необукер
Quote (Peter)
Я проверил: даже в таком (кастрированном) варианте всё компилится совершенно исправно.
оч.интересно, я повторил код автора и сделал функцию, со слезами на глазах и с глубоким чувством вины хотел компильнуть, но тоже вылетело с ошибкой
Прикрепления: 2788785.jpg (17.0 Kb) · rekrussia.rar (2.1 Kb)


Сообщение отредактировано
Сергей - Чт, 27 Мая 2010, 17:04
 
Сообщение
Quote (Peter)
Я проверил: даже в таком (кастрированном) варианте всё компилится совершенно исправно.
оч.интересно, я повторил код автора и сделал функцию, со слезами на глазах и с глубоким чувством вины хотел компильнуть, но тоже вылетело с ошибкой

Автор - Сергей
Дата добавления - 27 Мая 2010 в 16:52
PeterДата: Чт, 27 Мая 2010, 17:05 | Сообщение # 8
Админ NeoBook
Сейчас попробовал создать "пустую" функцию "test"...
Всё компилится без проблем.

Добавлено (27 Май 2010, 16:59)
---------------------------------------------
Сделал НЕ пустую функцию "test" с указанным автором сабжа параметром...
Проблем с компилляцией нет!

Добавлено (27 Май 2010, 17:05)
---------------------------------------------

Quote (Сергей)
Ведь не знаем как она присоединяется к проекту при компиляции

Очевидно очень просто - файл функции "приклеивается" к файлу проекта (точно так же как и вложенные файлы), а при запуске код функции считывается и распаковывается в память.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
СообщениеСейчас попробовал создать "пустую" функцию "test"...
Всё компилится без проблем.

Добавлено (27 Май 2010, 16:59)
---------------------------------------------
Сделал НЕ пустую функцию "test" с указанным автором сабжа параметром...
Проблем с компилляцией нет!

Добавлено (27 Май 2010, 17:05)
---------------------------------------------

Quote (Сергей)
Ведь не знаем как она присоединяется к проекту при компиляции

Очевидно очень просто - файл функции "приклеивается" к файлу проекта (точно так же как и вложенные файлы), а при запуске код функции считывается и распаковывается в память.

Автор - Peter
Дата добавления - 27 Мая 2010 в 17:05
СергейДата: Чт, 27 Мая 2010, 17:07 | Сообщение # 9
Необукер
короче, я покидаю форум, нервы дороже...
Лучше фильм смотреть буду(Поршивые овцы)
это ппц, грузится неимоверно долго и то если раз пять стартанешь...

Добавлено (27 Май 2010, 17:07)
---------------------------------------------

Quote (Peter)
Сделал НЕ пустую функцию "test" с указанным автором сабжа параметром...
хмм, странно! а вот у меня с ошибкой(в прищепке выше был сырец)


Сообщение отредактировано
Сергей - Чт, 27 Мая 2010, 17:17
 
Сообщениекороче, я покидаю форум, нервы дороже...
Лучше фильм смотреть буду(Поршивые овцы)
это ппц, грузится неимоверно долго и то если раз пять стартанешь...

Добавлено (27 Май 2010, 17:07)
---------------------------------------------

Quote (Peter)
Сделал НЕ пустую функцию "test" с указанным автором сабжа параметром...
хмм, странно! а вот у меня с ошибкой(в прищепке выше был сырец)

Автор - Сергей
Дата добавления - 27 Мая 2010 в 17:07
PeterДата: Чт, 27 Мая 2010, 17:12 | Сообщение # 10
Админ NeoBook
Следует иметь ввиду, что (в отличие от Delphi) при компилляции проекта NeoBook НЕ производит проверку на правильность синтаксиса, и ЧТО там напахано в скриптах необушному компиллятору по-барабану!
:D
При тестировании проекта ошибку обнаружит отладчик, и то только при обращении к части кода, содержащей ошибку, а в конечном (скомпиллированом) файле на эту ошибку укажет уже сам проект при "обращении" к ней.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
СообщениеСледует иметь ввиду, что (в отличие от Delphi) при компилляции проекта NeoBook НЕ производит проверку на правильность синтаксиса, и ЧТО там напахано в скриптах необушному компиллятору по-барабану!
:D
При тестировании проекта ошибку обнаружит отладчик, и то только при обращении к части кода, содержащей ошибку, а в конечном (скомпиллированом) файле на эту ошибку укажет уже сам проект при "обращении" к ней.

Автор - Peter
Дата добавления - 27 Мая 2010 в 17:12
СергейДата: Чт, 27 Мая 2010, 17:17 | Сообщение # 11
Необукер
Quote (Peter)
при компилляции проекта NeoBook НЕ производит проверку на правильность синтаксиса
ну проверь Прикрепление(#7) у меня на глухо вылетает. На верочку скинь свой экземпляр.
 
Сообщение
Quote (Peter)
при компилляции проекта NeoBook НЕ производит проверку на правильность синтаксиса
ну проверь Прикрепление(#7) у меня на глухо вылетает. На верочку скинь свой экземпляр.

Автор - Сергей
Дата добавления - 27 Мая 2010 в 17:17
mishemДата: Чт, 27 Мая 2010, 17:40 | Сообщение # 12
Эксперт форума
Quote (Сергей)
ну проверь Прикрепление(#7)

У меня тоже вылетает


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Сергей)
ну проверь Прикрепление(#7)

У меня тоже вылетает

Автор - mishem
Дата добавления - 27 Мая 2010 в 17:40
PeterДата: Чт, 27 Мая 2010, 17:53 | Сообщение # 13
Админ NeoBook
Quote (Сергей)
короче, я покидаю форум, нервы дороже...
Лучше фильм смотреть буду(Поршивые овцы)
это ппц, грузится неимоверно

Сергей, подожди кино смотреть!
Похоже ты был прав и не все тут просто...
Проверил вой вариант - у меня тоже с ошибкой!
Но у меня функция была принципиально другая, не рекурсивная.
:D
И вот, что интересно: ошибка вылетает не только при попытке комплляции, но и при проверке файлов проекта , т.е NB (как обычно перед компилляцией) проверяет все ли файлы на месте (целостность проекта), и вот в этом месте зацикливается, если в функции идет обращение к себе самой.
Видимо, все же тексты функций прочитываются пр проверке, что вполне логично, т.к. в функции может содержаться обращение к внешним файлам, а тут получается, что функция ищет саму себя...
%)
Бред какой-то получается...
Возможно зависание идет потому-что файл функции в этот момент открыт..
Значит Сергей прав, и оформлять рекурсию надо ввиде подпрограмм.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Сергей)
короче, я покидаю форум, нервы дороже...
Лучше фильм смотреть буду(Поршивые овцы)
это ппц, грузится неимоверно

Сергей, подожди кино смотреть!
Похоже ты был прав и не все тут просто...
Проверил вой вариант - у меня тоже с ошибкой!
Но у меня функция была принципиально другая, не рекурсивная.
:D
И вот, что интересно: ошибка вылетает не только при попытке комплляции, но и при проверке файлов проекта , т.е NB (как обычно перед компилляцией) проверяет все ли файлы на месте (целостность проекта), и вот в этом месте зацикливается, если в функции идет обращение к себе самой.
Видимо, все же тексты функций прочитываются пр проверке, что вполне логично, т.к. в функции может содержаться обращение к внешним файлам, а тут получается, что функция ищет саму себя...
%)
Бред какой-то получается...
Возможно зависание идет потому-что файл функции в этот момент открыт..
Значит Сергей прав, и оформлять рекурсию надо ввиде подпрограмм.

Автор - Peter
Дата добавления - 27 Мая 2010 в 17:53
AlienДата: Чт, 27 Мая 2010, 18:05 | Сообщение # 14
Тот пример который предложил Сергей, у меня скомпилировался %)
Вот пример проекта использования моей функции, который не компилируется:
Прикрепления: 3849524.rar (1.7 Kb)
 
СообщениеТот пример который предложил Сергей, у меня скомпилировался %)
Вот пример проекта использования моей функции, который не компилируется:

Автор - Alien
Дата добавления - 27 Мая 2010 в 18:05
PeterДата: Чт, 27 Мая 2010, 18:19 | Сообщение # 15
Админ NeoBook
Quote (Alien)
Вот пример проекта использования моей функции, который не компилируется

Да, всё верно - НЕ компиллируется!
А точнее - не столько не компилируется, а сколько не проходит проверку на целостность файлов проекта, и похоже по той причине на которую я указывал, птому и не компиллируется, т.к. NB входит в ступор!
:D
В проектном режиме проверка файлов (при тестовом запуске проекта) не производится.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Alien)
Вот пример проекта использования моей функции, который не компилируется

Да, всё верно - НЕ компиллируется!
А точнее - не столько не компилируется, а сколько не проходит проверку на целостность файлов проекта, и похоже по той причине на которую я указывал, птому и не компиллируется, т.к. NB входит в ступор!
:D
В проектном режиме проверка файлов (при тестовом запуске проекта) не производится.

Автор - Peter
Дата добавления - 27 Мая 2010 в 18:19
AlienДата: Чт, 27 Мая 2010, 18:21 | Сообщение # 16
Quote (Peter)
NB входит в ступор!

можно его как-то обмануть?
 
Сообщение
Quote (Peter)
NB входит в ступор!

можно его как-то обмануть?

Автор - Alien
Дата добавления - 27 Мая 2010 в 18:21
PeterДата: Чт, 27 Мая 2010, 18:31 | Сообщение # 17
Админ NeoBook
Quote (Alien)
можно его как-то обмануть?

Скорее всего нет.
Подоплека такого поведения NB очень проста - при компилляции проекта NB собирает в единое целое все внешние файлы проекта, а их она получить может только на основе анализа текстов скриптов и внешних функций.

Выход, пожалуй, (пока) один - оформляйте рекурсию в виде подпрограммы.
В принципе, на работоспособности проекта это никак не сказывается, разьве только придется в каждом новом проекте заново (всего-то один раз!) прописывать подпрограмму.
Или вы планируете использовать одну и ту же рекурсию постоянно и непрерывно, в каждом проекте?
:)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Alien)
можно его как-то обмануть?

Скорее всего нет.
Подоплека такого поведения NB очень проста - при компилляции проекта NB собирает в единое целое все внешние файлы проекта, а их она получить может только на основе анализа текстов скриптов и внешних функций.

Выход, пожалуй, (пока) один - оформляйте рекурсию в виде подпрограммы.
В принципе, на работоспособности проекта это никак не сказывается, разьве только придется в каждом новом проекте заново (всего-то один раз!) прописывать подпрограмму.
Или вы планируете использовать одну и ту же рекурсию постоянно и непрерывно, в каждом проекте?
:)

Автор - Peter
Дата добавления - 27 Мая 2010 в 18:31
AlienДата: Чт, 27 Мая 2010, 18:59 | Сообщение # 18
Quote (Peter)
Или вы планируете использовать одну и ту же рекурсию постоянно и непрерывно, в каждом проекте?

нет конечно)
А подпрограмму использовать - это как?
 
Сообщение
Quote (Peter)
Или вы планируете использовать одну и ту же рекурсию постоянно и непрерывно, в каждом проекте?

нет конечно)
А подпрограмму использовать - это как?

Автор - Alien
Дата добавления - 27 Мая 2010 в 18:59
СергейДата: Чт, 27 Мая 2010, 19:28 | Сообщение # 19
Необукер
Quote (Peter)
ошибка вылетает не только при попытке комплляции
и также в архив не сбрасывается
Quote (Alien)
А подпрограмму использовать - это как?
это GoSub "программа"
Code
:test
SetVar "[test]" "[test]+1"     
If "[test]" "<" "5"     
         GoSub "test"
Else     
        AlertBox "Рекурсивная функция" "Работает! Маленький код только для теста."     
EndIf
return
.вызываешь эту подпрограмму командой --> GoSub "test"
в посте 7 есть пример, я там закоментировал команду, тока функцию закоментируй

Добавлено (27 Май 2010, 19:28)
---------------------------------------------

Quote (Peter)
Выход, пожалуй, (пока) один - оформляйте рекурсию в виде подпрограммы.
в принципе я так и делаю(и никакого дискомфорта), а на функцию упор делаю, когда использую код постоянно в проектах, типа на проверку файлов или еще всяких постоянно использующихся фич :)


Сообщение отредактировано
Сергей - Чт, 27 Мая 2010, 20:10
 
Сообщение
Quote (Peter)
ошибка вылетает не только при попытке комплляции
и также в архив не сбрасывается
Quote (Alien)
А подпрограмму использовать - это как?
это GoSub "программа"
Code
:test
SetVar "[test]" "[test]+1"     
If "[test]" "<" "5"     
         GoSub "test"
Else     
        AlertBox "Рекурсивная функция" "Работает! Маленький код только для теста."     
EndIf
return
.вызываешь эту подпрограмму командой --> GoSub "test"
в посте 7 есть пример, я там закоментировал команду, тока функцию закоментируй

Добавлено (27 Май 2010, 19:28)
---------------------------------------------

Quote (Peter)
Выход, пожалуй, (пока) один - оформляйте рекурсию в виде подпрограммы.
в принципе я так и делаю(и никакого дискомфорта), а на функцию упор делаю, когда использую код постоянно в проектах, типа на проверку файлов или еще всяких постоянно использующихся фич :)

Автор - Сергей
Дата добавления - 27 Мая 2010 в 19:28
Alex3AДата: Чт, 27 Мая 2010, 19:45 | Сообщение # 20
Друг клуба ММВ
Quote (Сергей)
но с подпрограммами эта фишка работает

Рекурсия это вызов ПОДПРОГРАММЫ самой себя.
Рекурсия сходна с циклом, разница только в том что при рекурсивном вызове
создается копия подпрограммы, столько раз сколь определена глубина рекурсии.
Quote (Peter)
Сделал НЕ пустую функцию "test"

Счетчик глубины рекурсии передается из одной копии подпрограммы в другую, при этом
уменьшаясь или увеличиваясь, в зависимости от того по какому условию вы прекращаете
рекурсивный вызов.
Ну и естественно все должно присутствовать и подпрограмма и условие выхода.
Иначе умрет ваш комп, использует всю доступную память или впадет в безконечный цикл.
Надо просто понимать что вы делаете.
Quote (Alien)
А подпрограмму использовать - это как?

отдельно находящийся и использующийся участок кода, даж не знаю синтаксиса нб-
Call "test" "[test]" обращение к подпрограмме, в общем случае это выглядит так
уровень1-
тест начало подпрограммы(глубина=2)
условие выхода из рекурсии
достигнуто - выйти глубина=1?
не достигнуто вызвать себя
-------------------------------
уровень2 тест начало подпрограммы(глубина=1)
условие выхода из рекурсии
достигнуто - выйти глубина=1?
не достигнуто вызвать себя
-------------------------------
............................
-------------------------------

конец попрограммы, тут должен быть возврат к тому месту откуда ее вызвали
вданном случае возврат на уровень1
-------------------------------
конец попрограммы, тут должен быть возврат к тому месту откуда ее вызвали
это представление как работает рекурсия
ну а сам код, естественно без вложения самого себя.
Суть в том что при рекурсии сначала заканчивается самый глубокая копия, а потом все
последовательно.

 
Сообщение
Quote (Сергей)
но с подпрограммами эта фишка работает

Рекурсия это вызов ПОДПРОГРАММЫ самой себя.
Рекурсия сходна с циклом, разница только в том что при рекурсивном вызове
создается копия подпрограммы, столько раз сколь определена глубина рекурсии.
Quote (Peter)
Сделал НЕ пустую функцию "test"

Счетчик глубины рекурсии передается из одной копии подпрограммы в другую, при этом
уменьшаясь или увеличиваясь, в зависимости от того по какому условию вы прекращаете
рекурсивный вызов.
Ну и естественно все должно присутствовать и подпрограмма и условие выхода.
Иначе умрет ваш комп, использует всю доступную память или впадет в безконечный цикл.
Надо просто понимать что вы делаете.
Quote (Alien)
А подпрограмму использовать - это как?

отдельно находящийся и использующийся участок кода, даж не знаю синтаксиса нб-
Call "test" "[test]" обращение к подпрограмме, в общем случае это выглядит так
уровень1-
тест начало подпрограммы(глубина=2)
условие выхода из рекурсии
достигнуто - выйти глубина=1?
не достигнуто вызвать себя
-------------------------------
уровень2 тест начало подпрограммы(глубина=1)
условие выхода из рекурсии
достигнуто - выйти глубина=1?
не достигнуто вызвать себя
-------------------------------
............................
-------------------------------

конец попрограммы, тут должен быть возврат к тому месту откуда ее вызвали
вданном случае возврат на уровень1
-------------------------------
конец попрограммы, тут должен быть возврат к тому месту откуда ее вызвали
это представление как работает рекурсия
ну а сам код, естественно без вложения самого себя.
Суть в том что при рекурсии сначала заканчивается самый глубокая копия, а потом все
последовательно.


Автор - Alex3A
Дата добавления - 27 Мая 2010 в 19:45
AlienДата: Чт, 27 Мая 2010, 19:45 | Сообщение # 21
Quote (Сергей)
это GoSub "программа"

ааа, так бы и сказали что шаблоны ;)
 
Сообщение
Quote (Сергей)
это GoSub "программа"

ааа, так бы и сказали что шаблоны ;)

Автор - Alien
Дата добавления - 27 Мая 2010 в 19:45
Alex3AДата: Чт, 27 Мая 2010, 19:57 | Сообщение # 22
Друг клуба ММВ
Сергей, ну это уже похоже :D
А в алерт бокс поставь индекс рекурсии, тогда будет видно с какого уровня от идет.

Добавлено (27 Май 2010, 19:54)
---------------------------------------------
Классический пример рекурсивной проги-ханойская башня, перекидывание колец с палки на
палку, монахи играют в нее уж не одну сотню лет, как закончат игру будет конец света
глубина рекурсии в той игре что то в райне 8 или 9 палок.
Была такая игрушка на компе, ну с 3 я еще как то справлялся. :D

Добавлено (27 Май 2010, 19:57)
---------------------------------------------
Да, один из методов получения дерева справочника рекурсивный, если на папке стоит крестик, показывающий что в ней есть еще папки, и они действительно там есть, то испльзовался рекурсивный поиск, если крестик стоит но там ничего не вложено-
использовался линейный алгоритм.

 
СообщениеСергей, ну это уже похоже :D
А в алерт бокс поставь индекс рекурсии, тогда будет видно с какого уровня от идет.

Добавлено (27 Май 2010, 19:54)
---------------------------------------------
Классический пример рекурсивной проги-ханойская башня, перекидывание колец с палки на
палку, монахи играют в нее уж не одну сотню лет, как закончат игру будет конец света
глубина рекурсии в той игре что то в райне 8 или 9 палок.
Была такая игрушка на компе, ну с 3 я еще как то справлялся. :D

Добавлено (27 Май 2010, 19:57)
---------------------------------------------
Да, один из методов получения дерева справочника рекурсивный, если на папке стоит крестик, показывающий что в ней есть еще папки, и они действительно там есть, то испльзовался рекурсивный поиск, если крестик стоит но там ничего не вложено-
использовался линейный алгоритм.


Автор - Alex3A
Дата добавления - 27 Мая 2010 в 19:57
СергейДата: Чт, 27 Мая 2010, 20:06 | Сообщение # 23
Необукер
Quote (Alien)
ааа, так бы и сказали что шаблоны
причем тут шаблоны?! го суб, это и есть подпрограмма и ни чего другого! не надо искажать названия вещей, есть необукеры, которые открыли программу в первый раз и они будут искать шаблон, т.е. то чего нет...
Quote (Alex3A)
Рекурсия это вызов ПОДПРОГРАММЫ самой себя.
Alex3A в НБ кроме подпрограммы есть еще и вызов функции. Вот в ней то рекрусия и не пашет, а в подпрограмме идет нармально :)


Сообщение отредактировано
Сергей - Чт, 27 Мая 2010, 20:09
 
Сообщение
Quote (Alien)
ааа, так бы и сказали что шаблоны
причем тут шаблоны?! го суб, это и есть подпрограмма и ни чего другого! не надо искажать названия вещей, есть необукеры, которые открыли программу в первый раз и они будут искать шаблон, т.е. то чего нет...
Quote (Alex3A)
Рекурсия это вызов ПОДПРОГРАММЫ самой себя.
Alex3A в НБ кроме подпрограммы есть еще и вызов функции. Вот в ней то рекрусия и не пашет, а в подпрограмме идет нармально :)

Автор - Сергей
Дата добавления - 27 Мая 2010 в 20:06
PeterДата: Чт, 27 Мая 2010, 21:02 | Сообщение # 24
Админ NeoBook
Quote (Сергей)
причем тут шаблоны?! го суб, это и есть подпрограмма

Это я так в первых русификаторах обозвал "Subroutines", хотя, конечно, "подпрограммы" будет правильнее. В пследних русиках это было поправлено, но, видимо, ещё пользует народ старые версии NB, где это звучит как "шаблон".
:)
Quote (Сергей)
Вот в ней то рекрусия и не пашет

Не рекурсия не пашет, а NB зависает на стадии проверки проекта перед компилляцией, или созданием списка файлов проекта.
И именно поэтому:
Quote (Сергей)
и также в архив не сбрасывается

А сама по-себе рекурсия в скриптах работает.
Вот только в "функции" её запихивать не следует.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Quote (Сергей)
причем тут шаблоны?! го суб, это и есть подпрограмма

Это я так в первых русификаторах обозвал "Subroutines", хотя, конечно, "подпрограммы" будет правильнее. В пследних русиках это было поправлено, но, видимо, ещё пользует народ старые версии NB, где это звучит как "шаблон".
:)
Quote (Сергей)
Вот в ней то рекрусия и не пашет

Не рекурсия не пашет, а NB зависает на стадии проверки проекта перед компилляцией, или созданием списка файлов проекта.
И именно поэтому:
Quote (Сергей)
и также в архив не сбрасывается

А сама по-себе рекурсия в скриптах работает.
Вот только в "функции" её запихивать не следует.

Автор - Peter
Дата добавления - 27 Мая 2010 в 21:02
СергейДата: Чт, 27 Мая 2010, 21:12 | Сообщение # 25
Необукер
Quote (Peter)
Это я так в первых русификаторах обозвал "Subroutines"

а точно, забыл :D
Ну пора народу обновить прогу, че на старых сидеть?!
Quote (Peter)
А сама по-себе рекурсия в скриптах работает.
ну да работает, только в тестовом режиме.
Да короче, кому надо имено рекрусию, пусть в Subroutines используют, тем более такое редко в проектах используется...
Интересно а русик не повлиял? на английском тоже виснет? Надо у Омара спросить, он вроде на оригинале сидит...
 
Сообщение
Quote (Peter)
Это я так в первых русификаторах обозвал "Subroutines"

а точно, забыл :D
Ну пора народу обновить прогу, че на старых сидеть?!
Quote (Peter)
А сама по-себе рекурсия в скриптах работает.
ну да работает, только в тестовом режиме.
Да короче, кому надо имено рекрусию, пусть в Subroutines используют, тем более такое редко в проектах используется...
Интересно а русик не повлиял? на английском тоже виснет? Надо у Омара спросить, он вроде на оригинале сидит...

Автор - Сергей
Дата добавления - 27 Мая 2010 в 21:12
AlienДата: Чт, 27 Мая 2010, 21:15 | Сообщение # 26
Quote (Peter)
Это я так в первых русификаторах обозвал "Subroutines", хотя, конечно, "подпрограммы" будет правильнее. В пследних русиках это было поправлено, но, видимо, ещё пользует народ старые версии NB, где это звучит как "шаблон".

я к "шаблонам сценария" привык, приелось как-то :)
 
Сообщение
Quote (Peter)
Это я так в первых русификаторах обозвал "Subroutines", хотя, конечно, "подпрограммы" будет правильнее. В пследних русиках это было поправлено, но, видимо, ещё пользует народ старые версии NB, где это звучит как "шаблон".

я к "шаблонам сценария" привык, приелось как-то :)

Автор - Alien
Дата добавления - 27 Мая 2010 в 21:15
PeterДата: Чт, 27 Мая 2010, 21:32 | Сообщение # 27
Админ NeoBook
Чего-то я не догоняю - это что, рекурсия в головах началась, что ли?
:D
Quote (Сергей)
ну да работает, только в тестовом режиме.

Отчего же?
Оформи её как подпрограмму и будет работать в конечном ЕХЕ.
:)

Quote (Alien)
я к "шаблонам сценария" привык, приелось как-то

Ну это ещё у многих "проскакивает по-старинке"...
:)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
СообщениеЧего-то я не догоняю - это что, рекурсия в головах началась, что ли?
:D
Quote (Сергей)
ну да работает, только в тестовом режиме.

Отчего же?
Оформи её как подпрограмму и будет работать в конечном ЕХЕ.
:)

Quote (Alien)
я к "шаблонам сценария" привык, приелось как-то

Ну это ещё у многих "проскакивает по-старинке"...
:)

Автор - Peter
Дата добавления - 27 Мая 2010 в 21:32
ВадимДата: Чт, 27 Мая 2010, 21:38 | Сообщение # 28
Генератор идей


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение

Автор - Вадим
Дата добавления - 27 Мая 2010 в 21:38
PeterДата: Чт, 27 Мая 2010, 22:01 | Сообщение # 29
Админ NeoBook

Добавлено (27 Май 2010, 22:01)
---------------------------------------------
А вообще (если по уму), то конечно же надо их "бомбить" сообщениями о найденных глюках, ошибках и т.д.
Это тоже поможет улучшить программу.
Несомненно!


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение

Добавлено (27 Май 2010, 22:01)
---------------------------------------------
А вообще (если по уму), то конечно же надо их "бомбить" сообщениями о найденных глюках, ошибках и т.д.
Это тоже поможет улучшить программу.
Несомненно!


Автор - Peter
Дата добавления - 27 Мая 2010 в 22:01
СергейДата: Чт, 27 Мая 2010, 22:33 | Сообщение # 30
Необукер
 
Сообщение

Автор - Сергей
Дата добавления - 27 Мая 2010 в 22:33
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Рекурсивные функции
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: