Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19

Неправильный возврат значения функции

22.04.2014, 07:34. Показов 1090. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При компиляции если значение меньше или равно 100 программа прекращает работу а если значение выше 100 то работает нормально.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
float f(float);
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    float n;
    cout <<"Введите чиcло:";
    cin >> n;
    cout << "F("<< n << ") равен " << f(n) << endl;
    _getch();
    return 0;
}
 
float f(float n)
{   float factfunc;
    if (n > 100)  factfunc=n-10;
    if (n<=100)  factfunc=f(f(n+4));
    return factfunc;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.04.2014, 07:34
Ответы с готовыми решениями:

Возврат значения функции
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в...

Возврат значения из функции
Добрый вечер. Вопрос следующий , как возвратить из функции create последнее значение ЛС , чтоб в дальнейшем использовать в main. ...

Возврат значения из полиморфной функции
Доброго времени суток всем. Ребят не знаю как правильно сформулировать свой вопрос. Суть вот в чем: В базовом классе Cell определена...

10
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
22.04.2014, 07:45
Словами опиши, что нужно вычислить.
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
22.04.2014, 07:53
Ну правильно.
Допустим n=100
factfunc=f(f(n+4));
94=f(n+4)
factfunc=f(94);
приводит к вызову:
factfunc=f(f(n+4));

и вообщем это все будет до бесконечности повторяться.
Вообще двойную рекурсию обычно не делают....максимум одинарную стоит делать....
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 18:05  [ТС]
Как исправить?
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
22.04.2014, 20:58
nagato-re2010, смотря что ты хотел получить....
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 22:06  [ТС]
Описать рекурсивную функцию, позволяющую вычислить (формула если n>100 то n-10, а если n<=10 f(f(n+4)) но мой код не работает можете помочь с решением данной задачи
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
22.04.2014, 22:13
Цитата Сообщение от nagato-re2010 Посмотреть сообщение
но мой код не работает можете помочь с решением данной задачи
не работает потому что зацикливается
а зацикливается потому что после первого сравнения идет второе
может тебе вот так нужно?
C++
1
2
3
4
5
6
7
8
float f(float n)
{   float factfunc;
    if (n > 100) 
        factfunc=n-10;
   else
        factfunc=f(f(n+4));
   return factfunc;
}
Добавлено через 57 секунд
Цитата Сообщение от nagato-re2010 Посмотреть сообщение
если n<=10 f(f(n+4))
как это стыкуется с этим
Цитата Сообщение от nagato-re2010 Посмотреть сообщение
if (n<=100) factfunc=f(f(n+4));
?????
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 22:37  [ТС]
извини не правильно написал при n>100 factfunc=n-10, а при n<=100 factfunc=factfunc(factfunc(n+4)) так должно, а как реализовать я уже не знаю. То что я написал постоянно зацикливается
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
22.04.2014, 22:48
Цитата Сообщение от nagato-re2010 Посмотреть сообщение
То что я написал постоянно зацикливается
так и будет зацикливатся тебе solar_wind, уже объяснил
смотри
98
вызывается f(f(n+4));
сначала первая функция
f(n+4) f(102)
вернет
92
вызывается вторая она опять вызовет
f(f(n+4));
сначала первая функция
f(n+4) f(96)
она опять вызовет
f(f(n+4));
сначала первая функция
f(n+4) f(100)
ну и так далее
так и будешь крутится около сотни
определись что надо
полностью задание приведи
Цитата Сообщение от nagato-re2010 Посмотреть сообщение
n<=100 factfunc=factfunc(factfunc(n+4))
а это вообще что то новое
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 23:09  [ТС]
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
22.04.2014, 23:12
ну так у тебя есть вопрос какие возможные значения принимает функция
отвечаешь больше 100
иначе зацикливание и падения программы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2014, 23:12
Помогаю со студенческими работами здесь

Возврат копии значения из функции
Сегодня нашел информацию о том, что можно сохранять ссылку на временный объект, например #include &lt;iostream&gt; int foo() { ...

Возврат любого значения из функции
Здравствуйте, всем. есть функция принимающая массив char, она может вернуть любой тип данных, char или int. Но у меня не получается это...

Неправильный вывод значения функции quadr
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;cmath&gt; using namespace std; double...

Возврат значения через параметр функции
Пишу функцию,которая должна создавать динамическую матрицу,а затем возвращать ее через параметр. Правильно ли я понимаю,что для этого надо...

Двумерные массивы и возврат значения из функции
Доброго времени суток уважаемые фуромчане! Решил обратиться к более опытным людям ибо сам допереть не могу:) Ситуация вот в чём.Нужно...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru