![]() |
|
Модераторы: Alx, Fixin |
![]()
|
|
| Doc_d0s |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: нет Всего: 3 |
Написать программу для вычисления числа всевозможных перестановок, !!!без использования рекурсии!!!
--------------------
Админ- это вождь Apache'й :) |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: 1 Всего: 32 |
а разве это не n! будет?
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: 1 Всего: 4 |
Как это понять расшифруй плиз.. -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| Doc_d0s |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: нет Всего: 3 |
Ага а как ты вычислишь факториал без рекурсии ? --------------------
Админ- это вождь Apache'й :) |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Разве этот не факториал?
|
|||
|
||||
| Бегемот |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 26.1.2005 Где: На границе Европы и Азии Репутация: нет Всего: 3 |
ИМХО вот так:
|
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
rewerew
Si, exacto ! Сказывается рука набитая на циклах через массивы |
|||
|
||||
| Doc_d0s |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: нет Всего: 3 |
А это по твоему не рекурсия !!!!!!? --------------------
Админ- это вождь Apache'й :) |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Doc_d0s нет
|
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: нет Всего: 71 |
Кстати, факториал на самом деле всегда считается без рекурсии, так быстрее.
|
|||
|
||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: 1 Всего: 4 |
Факториал может считаться и с рекурсией :
Но если например создать в приложении два вида факториалов ( в первом обычный , а во втором с рекурсией) и поставить функцию для измерени интервала времени та разница между первым и вторым способами во времени будет огромная.. -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 1 Всего: 99 |
А можно еще и итеративной рекурсией...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
cardinal а можно сложением
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 1 Всего: 99 |
А можно... а можно вычитанием (отрицательных чисел) или делением (на дроби)...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Goryachev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 23.2.2005 Где: Израиль Репутация: нет Всего: нет |
Все, что можно сделать рекурсией, можно сделать итеративно. Просто иногда есть задачи, которые рекурсивно решаются легко, а итеративно надо ломать бошку...
|
|||
|
||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: 1 Всего: 4 |
А для чего нужна рекурсия , я не понимаю? Ведь с ней функции вычисляются гараздо дольше..
-------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Реурсия более понятна человеку. Код короткий. Легко читается. Не надо лишних контейнеров.
Но на практике она сакс конечно. |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 1 Всего: 99 |
А бывают случаи, когда без нее никак. Вот например поиск файлов у тебя на винчестере это чисто рекурсионная процедура. Цикл сделать для этой задачи невозможно, так как твоя файловая система это древовидная структура, глубина которой (то есть кол-во папок в папке в подпапке такой-то папки
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
cardinal
|
|||
|
||||
| TwisT_X |
|
||||||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: 1 Всего: 4 |
Ну вот смотри пример рекурсии на факториалах( На языке паскаль):
а вот с рекурсией:
Так второй вариант намного сложнее и дольше выполняем при работе с данной функцией!! -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
||||||
|
|||||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Для факториала да, а вот по дереву походи или по графу.
От Сложных алгоритмы часто с помощью рекурсии остаётся пара строк. |
|||
|
||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: 1 Всего: 4 |
У меня в книжке дано определение рекурсии:
Рекурсивная функция - это функция, которая вызывает сама себя либо непосредственно, либо косвенно с помощью другой функции. В некоторых задачах применение подобных функций обеспечивает компактное и красивое решение. Но для этого сама постановка задачи должна допускать рекурсию. -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 1 Всего: 317 |
Рекурсия проще в понимании, для итерации как уже говорилось ранее может понадобится стек, очередь и т.д. При вызове функции требуется время (занести адрес в стек, прыгнуть на тело функции), также все локальные переменные потребуют память при каждом вложении.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Doc_d0s |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: нет Всего: 3 |
sergej.z
да а ты уверен? препишем это так: ret=ret*i, а? Perchilla
А как? --------------------
Админ- это вождь Apache'й :) |
||||
|
|||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: 1 Всего: 4 |
Doc_d0s
Вот как .. -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| Бегемот |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 26.1.2005 Где: На границе Европы и Азии Репутация: нет Всего: 3 |
Doc_d0s
ret=ret*i и ret*=i это одно и тоже выражение, просто написание разное. И почему ты вообще решил, что вот это рекурсия?
Рекурсия - это процесс, при котором функция вызывает сама себя. А тут самый обыкновенный цикл. |
||||
|
|||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Слушай, почитай пожалуйста доку по рекурсии, а то так до следующего года спорить будешь |
|||
|
||||
| Doc_d0s |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: нет Всего: 3 |
Perchilla
А как? --------------------
Админ- это вождь Apache'й :) |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Тебе привели решение на двух языках уже. |
|||
|
||||
| sergejzr |
|
||||||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Doc_d0s
А
PS: Вызов функции имеет место в коде, если там присутствуют круглые скобки "(" и ")" При рекурсии должен происходить ещё и вызов самой функции собой. Например:
Хватит разводить флейм! |
||||||||
|
|||||||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Добавлю еще от себя.
Меня учили,что рекурсия был обнаружена случайно,и применение ей мало,так как поглощает много ресурсов.Рекурсия проще,и применяется при вычеслении(выполнении) малых и несложных алгоритмов. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 1 Всего: 99 |
Doc_d0s, открой книжку и прочитай еще раз что такое рекурсия!
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Doc_d0s |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 15.12.2004 Где: в кресле Репутация: нет Всего: 3 |
Люди я ни кого не хочу обижать, раз.
Как я уже говорил ТАК я бы и сам сделал, два. три, ну скажите иной способ нахождения факториала, кроме как умножением з.ы. Мир? --------------------
Админ- это вождь Apache'й :) |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 1 Всего: 99 |
Да нет такого способа. Есть вариант как посчитать примерно факториал больших чисел (формула Стирлинга), а больше ничего нет. Я не думаю, что заменив все операции умножения на сложения это все можно назвать "без умножения". Умножения как бы нет, но как бы оно есть Можно посчитать нерекурсивно, можно рекурсивно, а можно итеративно рекурсивно, можно заменить все умножения сложением, можно сделать одну хитрость и посчитать факториал 12 например не десятью умножениями, а пятью умножениями и пятью сложениями... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Alx |
|
|||
|
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: нет Всего: 78 |
тема закрыта
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |