0 / 0 / 0
Регистрация: 02.06.2015
Сообщений: 1
|
|
1 | |
Функция вызывает сама себя 10 раз21.12.2010, 22:26. Показов 13659. Ответов 37
Метки нет (Все метки)
Всем доброго времени суток, простите студента заочника, но я вынужден к вам обратиться за помощью. Мне в институте для зачета преподаватель дал задачу для решения: Функция вызывает сама себя 10 раз. Помогите решить пожалуйста, буду вам очень признателен)))
0
|
21.12.2010, 22:26 | |
Ответы с готовыми решениями:
37
Зачем функция вызывает саму себя? Подскажите немножко с рекурсией ( Функция должна вызывать сама себя до тех пор пока sum не станет больше х) Функция сама себя вызывает бесконечно Поясните. Функция вызывает сама себя без присваивания |
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
22.12.2010, 17:01 | 21 |
Kastaneda, не в обиду будет сказано, но я даже не могу решить для себя, что это - эзотерика или быдлокод
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
22.12.2010, 17:36 | 23 | |||||
Можно.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
22.12.2010, 17:39 | 24 |
ForEveR, тогда уж лучше вынести rec и foo в другой файл, и сделать rec статической функцей, чтобы ее не было видно в других единицах трансляции
0
|
22.12.2010, 17:41 | 25 | |||||
ForEveR,
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
22.12.2010, 17:45 | 26 | |||||
Кстати, вот еще вариант для тех, кто компилирует компилятором gcc:
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
22.12.2010, 17:45 | 27 |
Kastaneda, Проверял. До 10 доходит. От 1 до 10
Nameless One, да, это будет лучше.
0
|
Kastaneda
|
22.12.2010, 17:52
#28
|
0
|
Заблокирован
|
||||||
22.12.2010, 17:55 | 29 | |||||
ну, если в ход пошел exit(0);
тогда можно так
0
|
481 / 119 / 17
Регистрация: 30.09.2010
Сообщений: 473
|
|
22.12.2010, 18:02 | 30 |
Это не вариант решения задачи, т.к. в нем вызывается 10 раз не функция rec(), а вложенная функция printtimes(...) - еще раз внимательно читаем условие задачи.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
22.12.2010, 18:07 | 31 |
Сообщение было отмечено как решение
Решение
В языке C вызов функции exit в теле main полностью аналогичен оператору return.
Милейший, может быть, это Вы еще раз прочитаете условие задачи? Тут ничего не было сказано про то, какая эта функция должна быть, должны ли у нее быть параметры, должна ли она использовать глобальные или статические локальные переменные. Так что не надо, выдавая свои домыслы за жесткие требования, пуд*ить нам моз*и (извиняюсь за свой французский). Мы и так поняли, что Вы программист с неординарными качествами, поэтому, может быть, Вы оставите эту многострадальную тему в покое?
3
|
481 / 119 / 17
Регистрация: 30.09.2010
Сообщений: 473
|
|
22.12.2010, 18:42 | 32 |
В задании требуется написать функцию, которая будучи вызвана, вызывает себя рекурсивно 10 раз. Про зависимость от истории вызовов ничего не сказано, это подразумевает отсутствие такой зависимости.
Нет, на момент отквоченного сообщение только мой. Решение от easybudda есть решение несколько другой задачи, это было объяснено чуть не по складам выше, так что оценивать его эстетичность некорректно. Добавлено через 24 минуты Так можно, но менее кузяво. Если уж счетчик глубины рекурсивных вызовов ведется, то не грех поддерживать его в актуальном состоянии - мало ли зачем пригодится. Тем не менее, нельзя не отметить как положительный сдвиг то, что с божьей помощью и ценой неимоверных потуг с нескольких попыток форум таки родил второе правильное решение Да - путем мозгового штурма и усложнения кода удалось сэкономить аж целый ++times По мне так хуже, и читается и понимается.
0
|
Kastaneda
|
22.12.2010, 18:55
#33
|
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
22.12.2010, 19:10 | 34 |
Неа. У тебя на каждый инкремент приходится декремент, т.е. для функции, которая вызывается 10 раз, приходится 20 операций изменения статической переменной, против 11 у меня.
Например? У кого-то явно завышенное самомнение. Причем, судя по всему, завышенное необоснованно. Ну, это вопрос спорный и субъективный. Рекурсивная функция должна иметь:
И да, рекурсия в моей функции - хвостовая, поэтому некоторые компиляторы могут ее оптимизировать
2
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
22.12.2010, 19:18 | 35 | |||||
Изврат. Но условие выполняется... Вызывает 10 раз саму себя. Здесь тоже что-то не по условию?
0
|
481 / 119 / 17
Регистрация: 30.09.2010
Сообщений: 473
|
|
22.12.2010, 19:21 | 36 |
Можно и еще раз:
Коряво написано, собственно нет даже глагола в побудительном наклонении, так что формально это не постановка задачи вообще, об чем спор. Но если "переводить" с точки зрения здравого смысла, то это означает, что требуется написать функцию, которую можно вызвать из любого расположенного после ее декларации места основной программы или подпрограммы (а не только из функции-контейнера!), и она при этом вызовет себя рекурсивно 10 раз (причем сделает это сама, по факту вызова, а не ориентируясь на переданный из внешнего вызова параметр!), причем функционал ее не зависит от истории вызовов. И это не ограничения, а то, как принимается по умолчанию. Это как по умолчанию среди приличных людей принято не сморкаться в занавески, хотя об этом нигде и не написано.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
22.12.2010, 19:28 | 37 |
Лично вот эта часть (про параметр) сильнее всего походит на твой домысел, но так как этой спор уже приближается к уровню флейма, предлагаю оставить этот вопрос. Мне, как я вижу, тебя не переубедить, и уверяю тебя, тебе меня тоже
1
|
Модератор
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
|
|
22.12.2010, 20:07 | 38 |
Сообщение было отмечено как решение
Решение
Напильнег, конечно же Вы правы! И единственное (ну по крайней мере первое) абсолютно верное решение тоже было Вами предоставлено! Мало того - ни Страуструпп ни Керниган с Ричи лучше не написали бы. Жаль, что не увидят...
На этой радостной оптимистической ноте и закрою тему. Желающие лично выразить восхищение Напильнег, пишите ему в ЛС.
3
|
22.12.2010, 20:07 | |
22.12.2010, 20:07 | |
Помогаю со студенческими работами здесь
38
Написать рекурсивную функцию, определяющую, сколько раз функция FIB вызывает саму себя Создать файл с html формой которая вызывает сама себя Нужно, чтобы форма распечатала сама себя, или только часть себя Программа, выводящая сама себя Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |