|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.12.2011, 21:19 | #1 |
Новичок
Джуниор
Регистрация: 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; } |
21.12.2011, 21:19 | #2 |
Новичок
Джуниор
Регистрация: 21.12.2011
Сообщений: 3
|
Помогите, пожалуйста, понять в чем тут дело
|
21.12.2011, 21:36 | #3 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Ошибок "что-то не работает" не существует. Существуют только конкретные ошибки:
1. Программа работает, но делает не то что надо. (описание неисправности) 2. Программа крошится в рантайме, под ругательства системы. (скриншот, или примерное описание текста сообщение системы) 3. Исходный код не компилируется. (Точный текст ошибки компилятора. Желательно - с указанием точных строчек кода, на которые ругнулся компилятор) 4. Единицы трансляции не компонуется. (Точный текст ошибки компоновщика.) Телепаты в отпуске. |
21.12.2011, 21:37 | #4 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
а так вообще.. похоже на вечную рекурсию
|
21.12.2011, 21:56 | #5 |
Новичок
Джуниор
Регистрация: 21.12.2011
Сообщений: 3
|
В рантайме. Ошибка сегментирования. Я писал в названии. Рекурсия не вечна, есть условия выхода.
|
21.12.2011, 21:59 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а выполняется ли это условие?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
21.12.2011, 22:20 | #7 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
2. Поставь брейк поинт на строчку выхода из функции, и в пошаговом режиме глянь - доходит ли процесс до неё, или падает раньше. Если не доходит - стало быть вечная рекурсия. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка сегментирования при вызове 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 |