Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
nagato-re2010
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
1

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

22.04.2014, 07:34. Просмотров 493. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 07:34
Ответы с готовыми решениями:

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

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

Возврат копии значения из функции
Сегодня нашел информацию о том, что можно сохранять ссылку на временный объект,...

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

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

10
nmcf
6500 / 5735 / 2611
Регистрация: 14.04.2014
Сообщений: 24,464
22.04.2014, 07:45 2
Словами опиши, что нужно вычислить.
0
solar_wind
761 / 752 / 58
Регистрация: 06.07.2009
Сообщений: 2,993
Завершенные тесты: 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));

и вообщем это все будет до бесконечности повторяться.
Вообще двойную рекурсию обычно не делают....максимум одинарную стоит делать....
0
nagato-re2010
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 18:05  [ТС] 4
Как исправить?
0
solar_wind
761 / 752 / 58
Регистрация: 06.07.2009
Сообщений: 2,993
Завершенные тесты: 1
22.04.2014, 20:58 5
nagato-re2010, смотря что ты хотел получить....
0
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)) но мой код не работает можете помочь с решением данной задачи
0
ValeryS
Модератор
7372 / 5573 / 707
Регистрация: 14.02.2011
Сообщений: 18,936
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));
?????
0
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)) так должно, а как реализовать я уже не знаю. То что я написал постоянно зацикливается
0
ValeryS
Модератор
7372 / 5573 / 707
Регистрация: 14.02.2011
Сообщений: 18,936
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))
а это вообще что то новое
0
nagato-re2010
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
22.04.2014, 23:09  [ТС] 10
Неправильный возврат значения функции
0
ValeryS
Модератор
7372 / 5573 / 707
Регистрация: 14.02.2011
Сообщений: 18,936
22.04.2014, 23:12 11
ну так у тебя есть вопрос какие возможные значения принимает функция
отвечаешь больше 100
иначе зацикливание и падения программы
0
22.04.2014, 23:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 23:12

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

Повторный возврат рандомного значения ,без изменения значения
Добрый день. Пишу простую консольную игру Кости. Есть 4-е функции прорисовки...

Возврат значения С++
Hi people! Вот такое задание: 1) Реализовать заданную динамическую структуру...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru