Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585

В VS 2015 не работает рекурсивная функция, которая работает в C++Builder

25.01.2019, 03:15. Показов 1565. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Перенес блок кода из старого учебного проекта под C++Builder, который там всегда стабильно работал, на VS 2015. Одна из рекурсивных функций (расчет факториала) не работает в VS - выдает глючный отрицательный результат.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int ExFact(int n);
 
int main()
{
    int x;
    printf("input x:");  scanf_s("%i", &x);
    printf("Factorial = %i\n", ExFact(x));
 
    system("pause");
    return 0;
}
 
int ExFact(int n)
{
    if (n > 1)
        return n*ExFact(n - 1);
}
В чем может быть дело? Почему на одном компиляторе работает, на другом - нет?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2019, 03:15
Ответы с готовыми решениями:

Не работает рекурсивная функция
У меня есть поле 80 на 80 клеток, с препятствиями. Функция должна в отдельный массив записавыть в соответствующую клеточку число,...

Не работает рекурсивная функция
Добрый день, имеется задание: Напишите вспомогательную функцию nth, которая в качестве аргументов принимает список и число, а...

Не работает рекурсивная функция
Файл "Tree.js" function changeDisplay(id){ //Функция открытия закрытия дерева var ul = document.getElementById('ul' +...

3
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
25.01.2019, 04:54
Что у вас возвращает функция, если условие if (n > 1) не выполняется?

Добавлено через 5 минут
Вам даже компилятор предупреждение выдает
warning C4715: 'ExFact': not all control paths return a value
1
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
25.01.2019, 13:36  [ТС]
Someone007, в этом случае мне от нее ничего не нужно)
Если добавить
C++
1
else return 1;
то все работает, и в этом, конечно, есть логика.
Но почему тогда в C++Builder'е все работает и так (без else)?
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
25.01.2019, 15:57
Цитата Сообщение от znseday Посмотреть сообщение
в этом случае мне от нее ничего не нужно)
Вот тут совершенно не правы. Любая рекурсия должна иметь возможность выхода.
В Вашем первоначальном коде этого не было! В таком случае возвращалось какое-то случайное число из стека!
Что именно, это уже зависело от реализации компилятора!!! Поэтому и могло получиться, что в Builder-е случайно срабатывало.
Это однозначно ошибка!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2019, 15:57
Помогаю со студенческими работами здесь

Как работает рекурсивная функция
Есть функция вывода бинарного дерева struct Node { int x; Node *l,*r; }; void show(Node *Tree) { if (Tree!=NULL)

Неправильно работает рекурсивная функция
Всем привет. Ребят, есть вот такая задача: Есть организация. У неё есть всякие подразделения (ID). У каждого подразделения есть баллы,...

Объяснить как работает рекурсивная функция и стек вызовов на моем примере
Объясните пожалуйста как работает рекурсивная функция и стек вызовов на моем примере. Здесь известный алгоритм "Разделяй и...

Почему данный код работает в builder 6 а в builder 10 не работает?
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_LAYERED); SetLayeredWindowAttributes(Handle, 0, 128,...

C++ builder. Написать программу, которая работает в одном из двух режимов.
Написать программу, которая работает в одном из двух режимов. Если в текущем каталоге имеется текстовый файл “tabl.txt”, то распечатать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 12.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 11.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 10.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 09.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 09.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 09.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru