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

Переписать рекурсивно итерационную функцию. - C++

Восстановить пароль Регистрация
 
sanlex25
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 29
31.03.2014, 11:17     Переписать рекурсивно итерационную функцию. #1
Кто может записать эту итерационную функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
double norek(double a, double b, double e){
double x;
   while (fabs(b - a) >= e) {
      x = (a + b) / 2;
      if (func(x+e)>func(x-e))
         b = x;
      else
         a = x;
   }
   return (a + b) / 2;
}
в ввиде рекурсивной?

я пробовал написать вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
double rek(double a, double b, double e){
double x;
      x = (a + b) / 2;
      if (func(x+e)>func(x-e))
         b = x;
      else
         a = x;
         if (fabs(b - a) >= e) rek(a,b,e);
         else
         return (a+b)/2;
}
но выдает ошибку "Invalid floating point operation"

Помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 11:17     Переписать рекурсивно итерационную функцию.
Посмотрите здесь:

Вычислить сумму ряда с позиции N до позиции M. Функцию вычисления суммы реализовать рекурсивно. C++
C++ Вычислить рекурсивно функцию
Рекурсивно описать функцию C(n,m) C++
Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне C++
C++ Написать функцию, которая рекурсивно вычисляет сумму чисел в заданном диапазоне
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
31.03.2014, 11:53     Переписать рекурсивно итерационную функцию. #2
Опишите задачу, которую функция должна выполнять - может, помогу.
sanlex25
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 29
31.03.2014, 12:00  [ТС]     Переписать рекурсивно итерационную функцию. #3
Найти методом деления отрезка пополам минимум функции f(x) = 7sin2(x) на отрезке [a, b] с заданной точностью e (например, 0.01).
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.03.2014, 12:01     Переписать рекурсивно итерационную функцию. #4
Вроде бы так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
double rek(double a, double b, double e)
{
    if( std::abs(b - a) < e) 
    {
        return (a + b) / 2;
    }
        
    double x = (a + b) / 2;
    if (func(x+e)>func(x-e))
    {
        b = x;
    }
    else
    {
        a = x;
    }
        
    return rek( a, b, e );
}
Yandex
Объявления
31.03.2014, 12:01     Переписать рекурсивно итерационную функцию.
Ответ Создать тему
Опции темы

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