Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсия 
V
    Опции темы
Snik
Дата 12.9.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 16.8.2006

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



Код


# include <iostream> 
using namespace std;
long int rec(long int n);

int main(){
    rec(1);
return 0;
}

long int rec(long int n)
{
    if(n!=21000)
{
    cout << n <<",";
    rec(n+1);
}
return n;
}



Почему при таком коде на экран выводит только числа до 4772 ? Означает ли это что рекурсивная функция предельно может выдвинутся только до 4772 ?
PM MAIL   Вверх
Rockie
Дата 12.9.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 8
Всего: 31



у мну до 20999, компилятор BCB 6


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
rMaveric
Дата 12.9.2006, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: нет
Всего: 6



У меня не оказалось под рукой С++ и пришлось скомпилить Сишкой вот такой код
Код

#include <stdio.h>

int rec(int n);

int main(){
rec(1);
return 0;
}

int rec(int n)
{
if(n!=21000)
    {
    printf("%d,", n);
    rec(n+1);
    }
return n;



В итоге просто прекрасно отработал


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Prehistorik
Дата 12.9.2006, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 30.5.2006
Где: СПб

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




А.... Навернео консоль сглючила и просто не вывела этого остальные числа.
--------------------
Есть только один бог - Ассемблер, и С - пророк его. 
PM MAIL   Вверх
Snik
Дата 12.9.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 16.8.2006

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



Странно до этого я запускал из под FAR (ошибок небыло). Теперь запустил в командной строке дошло до 4772 ругнулось(Unhandled exception at 0x7c9132a3 in Recursiy.exe: 0xC00000FD: Stack overflow.) и предложило "break" or "continue"

Добавлено @ 13:08 
и если "continue" то число увеличивается.  Чтобы это значило?
PM MAIL   Вверх
BreakPointMAN
Дата 12.9.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



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


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Snik
Дата 12.9.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 16.8.2006

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



Цитата(BreakPointMAN @ 12.9.2006,  13:18)
Стек же не резиновый...  smile Попробуй на порядок увеличить его размер, глубина рекурсии тоже увеличится...

Как это сделать? у меня МVStudio 8.0.50727.42
PM MAIL   Вверх
Snik
Дата 13.9.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 16.8.2006

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



!123
PM MAIL   Вверх
Damarus
Дата 13.9.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Цитата(Snik @  12.9.2006,  14:24 Найти цитируемый пост)
Как это сделать? у меня МVStudio 8.0.50727.42

Свойства проекта -> Linker -> System -> Stack Commit Size и Stack Reserve Size
PM MAIL ICQ Jabber   Вверх
Snik
Дата 13.9.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 16.8.2006

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



Спасибо теперь знаю где регулировать стек. Только в моем случае если я ставлю Stack Commit Size и Stack Reserve Size любые отличные от нуля числа то вышеприведенный код выводит числа до 1131
PM MAIL   Вверх
Damarus
Дата 13.9.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Цитата(Snik @  13.9.2006,  15:50 Найти цитируемый пост)
Спасибо теперь знаю где регулировать стек. Только в моем случае если я ставлю Stack Commit Size и Stack Reserve Size любые отличные от нуля числа то вышеприведенный код выводит числа до 1131

Мало ставишь smile Для данного кода вполне подойдёт Stack Reserve Size = 5242880.
PM MAIL ICQ Jabber   Вверх
Snik
Дата 13.9.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 16.8.2006

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



Спасибо помогло! Клево что вы есть smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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