![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
![]() |
volvo |
![]()
Сообщение
#21
|
Гость ![]() |
Если имя функции написано справа от знака присваивания - то это в любом случае трактуется компилятором как рекурсия. Для решения данной проблемы можно описать переменную result (которая уже есть в более новых компиляторах), и пользоваться ей, и только в самом конце присвоить ее значение имени функции, НО...
Возникает вопрос: а зачем тебе это? Зачем понадобилось внутри функции получать ее же значение? А если оно еще не вычислено до конца, тогда что? |
Client |
![]()
Сообщение
#22
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Цитата Для решения данной проблемы можно описать переменную result А можно пример, если не трудно? Цитата Возникает вопрос: а зачем тебе это? Например, есть рекурсия по нахождению факториала и мне надо вывести промежуточные значения этого факториала, или одно из значений функции понадобилось 2-3 раза (что-то вроде такого примера, из-за чего и возник этот вопрос). |
volvo |
![]()
Сообщение
#23
|
Гость ![]() |
Я так и не понял, зачем тебе внутри функции ее же значение понадобилось несколько раз? Ну, ладно...
var i: integer; Хотя опять же - я бы так делать не стал: во-первый, глобальные переменные не люблю, а во вторых - не могу представить, КАК это может понадобиться. Пример (конкретный, а не "допустим, нам понадобится") - в студию... Что именно понадобится, для чего надо сохранять значение ЭТОЙ же функции??? Цитата Например, есть рекурсия по нахождению факториала и мне надо вывести промежуточные значения этого факториала Я, кажется, уже написал, что если у тебя рекурсия по нахождению факториалов - то она должна их находить, а не печатать. Это не ее задача, понимаешь? А понадобилось печатать - оберни эту функцию еще одной, или напиши новую, тебе же будет проще потом отлаживать...Сообщение отредактировано: volvo - 22.01.2008 20:23 |
Client |
![]()
Сообщение
#24
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
function f(n:integer):byte;Функция подсчета количества цифр в числе. Цитата Я так и не понял, зачем тебе внутри функции ее же значение понадобилось несколько раз Лучше всего завести переменную (в этой функции-К) и делать с ней все что угодно, а потом это значение присвоить функции, но у меня почему-то всегда появляются такие вопросы: А что если так? А что если... Спасибо за пример и обяснение ![]() |
volvo |
![]()
Сообщение
#25
|
Гость ![]() |
Цитата Функция подсчета количества цифр в числе. элементарно переписывается вообще без этой самой доп. переменной:function f(n: integer): byte;, если что ![]() |
Client |
![]()
Сообщение
#26
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Цитата если что А так куда лучше ![]() ![]() Еще раз СПАСИБО! |
![]() ![]() |
![]() |
Текстовая версия | 1.09.2025 19:41 |