Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nagato-re2010
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 19
#1

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

22.04.2014, 07:34. Просмотров 438. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неправильный возврат значения функции (C++):

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

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

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

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

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

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

10
nmcf
5685 / 4996 / 1703
Регистрация: 14.04.2014
Сообщений: 20,383
22.04.2014, 07:45 #2
Словами опиши, что нужно вычислить.
0
solar_wind
757 / 748 / 42
Регистрация: 06.07.2009
Сообщений: 2,970
Завершенные тесты: 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
757 / 748 / 42
Регистрация: 06.07.2009
Сообщений: 2,970
Завершенные тесты: 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
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,245
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
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,245
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
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,245
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
Привет! Вот еще темы с ответами:

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

Возврат значения С++ - C++
Hi people! Вот такое задание: 1) Реализовать заданную динамическую структуру данных, с которой можно работать через перегруженные...

Возврат 2 значений из функции с одним вызовом этой же функции - C++
Вообщем где то в какой то игре была хукнута одна функция int function(int arg1,int arg2,int arg3); суть в чем int...

Возврат значения по ссылке - C++
Долго гуглил, но что-то так и не понял. Почему слева от знака = может использоваться только функция, возвращающая ссылку?


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

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

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