Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 21:19   #1
Avitella
Новичок
Джуниор
 
Регистрация: 21.12.2011
Сообщений: 3
Печаль Не работает код, вылетает ошибка сегментирования

#include <stdio.h>

int F(int m, int n) {
if (m == 0)
return n + 2;
else
if (n == 0 && m > 0)
return F(m - 1, 1);
else
return F(m - 1, F(m, n - 1)); /* Путем проб и ошибок выяснил, что скорее всего вылетает именно в этом месте, хоть и не уверен на все 100% */
}

int main() {
int m, n;
scanf("%d%d", &m, &n);
printf("%d", F(m, n));
return 0;
}
Avitella вне форума Ответить с цитированием
Старый 21.12.2011, 21:19   #2
Avitella
Новичок
Джуниор
 
Регистрация: 21.12.2011
Сообщений: 3
По умолчанию

Помогите, пожалуйста, понять в чем тут дело
Avitella вне форума Ответить с цитированием
Старый 21.12.2011, 21:36   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Avitella Посмотреть сообщение
Помогите, пожалуйста, понять в чем тут дело
Ошибок "что-то не работает" не существует. Существуют только конкретные ошибки:

1. Программа работает, но делает не то что надо. (описание неисправности)

2. Программа крошится в рантайме, под ругательства системы. (скриншот, или примерное описание
текста сообщение системы)

3. Исходный код не компилируется. (Точный текст ошибки компилятора. Желательно - с указанием
точных строчек кода, на которые ругнулся компилятор)

4. Единицы трансляции не компонуется. (Точный текст ошибки компоновщика.)

Телепаты в отпуске.
_Bers вне форума Ответить с цитированием
Старый 21.12.2011, 21:37   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

а так вообще.. похоже на вечную рекурсию
_Bers вне форума Ответить с цитированием
Старый 21.12.2011, 21:56   #5
Avitella
Новичок
Джуниор
 
Регистрация: 21.12.2011
Сообщений: 3
По умолчанию

В рантайме. Ошибка сегментирования. Я писал в названии. Рекурсия не вечна, есть условия выхода.
Avitella вне форума Ответить с цитированием
Старый 21.12.2011, 21:59   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а выполняется ли это условие?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.12.2011, 22:20   #7
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Avitella Посмотреть сообщение
В рантайме. Ошибка сегментирования. Я писал в названии. Рекурсия не вечна, есть условия выхода.
1. "Ошибок сегментирования" 100500 всяких разных. Предлагаешь погадать, какая из них твоя? Или все таки сообщишь точный текст ошибки?

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка сегментирования при вызове strcat Кипящий чайник Общие вопросы C/C++ 4 05.03.2011 20:49
Ошибка сегментирования Olechka555 Общие вопросы C/C++ 1 14.09.2010 08:50
При запуске игры вылетает ошибка DarknEz Софт 28 14.12.2009 14:09
Вылетает ошибка jon_free Операционные системы общие вопросы 3 29.06.2009 23:30
вылетает ошибка! Алёна Общие вопросы Delphi 20 17.05.2007 06:57