Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
nagato-re2010
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 07:34     Неправильный возврат значения функции #1
При компиляции если значение меньше или равно 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 07:34     Неправильный возврат значения функции
Посмотрите здесь:

Возврат значения по ссылке C++
Возврат значения из функции C++
Возврат значения С++ C++
Возврат значения через параметр функции C++
Двумерные массивы и возврат значения из функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4324 / 3745 / 1260
Регистрация: 14.04.2014
Сообщений: 14,704
22.04.2014, 07:45     Неправильный возврат значения функции #2
Словами опиши, что нужно вычислить.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
22.04.2014, 07:53     Неправильный возврат значения функции #3
Ну правильно.
Допустим n=100
factfunc=f(f(n+4));
94=f(n+4)
factfunc=f(94);
приводит к вызову:
factfunc=f(f(n+4));

и вообщем это все будет до бесконечности повторяться.
Вообще двойную рекурсию обычно не делают....максимум одинарную стоит делать....
nagato-re2010
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 18:05  [ТС]     Неправильный возврат значения функции #4
Как исправить?
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
22.04.2014, 20:58     Неправильный возврат значения функции #5
nagato-re2010, смотря что ты хотел получить....
nagato-re2010
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 22:06  [ТС]     Неправильный возврат значения функции #6
Описать рекурсивную функцию, позволяющую вычислить (формула если n>100 то n-10, а если n<=10 f(f(n+4)) но мой код не работает можете помочь с решением данной задачи
ValeryS
Модератор
6378 / 4844 / 442
Регистрация: 14.02.2011
Сообщений: 16,066
22.04.2014, 22:13     Неправильный возврат значения функции #7
Цитата Сообщение от 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));
?????
nagato-re2010
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 22:37  [ТС]     Неправильный возврат значения функции #8
извини не правильно написал при n>100 factfunc=n-10, а при n<=100 factfunc=factfunc(factfunc(n+4)) так должно, а как реализовать я уже не знаю. То что я написал постоянно зацикливается
ValeryS
Модератор
6378 / 4844 / 442
Регистрация: 14.02.2011
Сообщений: 16,066
22.04.2014, 22:48     Неправильный возврат значения функции #9
Цитата Сообщение от 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))
а это вообще что то новое
nagato-re2010
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 23:09  [ТС]     Неправильный возврат значения функции #10
Неправильный возврат значения функции
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 23:12     Неправильный возврат значения функции
Еще ссылки по теме:

Возврат значения функции C++
C++ Возврат значения из operator=
Возврат значения объектом класса C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6378 / 4844 / 442
Регистрация: 14.02.2011
Сообщений: 16,066
22.04.2014, 23:12     Неправильный возврат значения функции #11
ну так у тебя есть вопрос какие возможные значения принимает функция
отвечаешь больше 100
иначе зацикливание и падения программы
Yandex
Объявления
22.04.2014, 23:12     Неправильный возврат значения функции
Ответ Создать тему
Опции темы

Текущее время: 13:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru