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

По заданной формуле написать рекурсию

13.04.2015, 14:54. Показов 802. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно по данной формуле написать рекурсию. Циклом я понимаю как написать, но как работать с рекурсией через две переменные не понимаю. Помогите написать код.

Пример через цикл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
double summa(int n)
{     
    int i;
    double y1, x1, x2, y2, sm, sum=0;
    x1 = y1 = 1;
    printf("\nВведите натуральное n: ");
    n = zachita('n');
    for (i = 1; i <=n; i++)
    {
        x2 = 0.3*x1;
        y2=x1+y1;
        sm = x1 / (1+fabs(double(y1)));
        sum=sum+sm;
        x1 = x2;
        y1 = y2;
    }
        return sum;
}
Миниатюры
По заданной формуле написать рекурсию  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.04.2015, 14:54
Ответы с готовыми решениями:

Написать функцию вычисляющую значение по заданной формуле
Собственно сама формула: a=\frac{\sqrt{\left|x+1 \right|}}{\frac{1}{2}+\frac{x^4}{6}}

Написать программу, вычисляющую сумму по заданной формуле
Вычислить сумму

Написать программу для расчета значений переменных по заданной формуле
Доброй ночи! Нужно написать программу для расчета значений переменных y и z по заданной формуле(изображение прикреплено). ...

12
place status here
 Аватар для gunslinger
3187 / 2221 / 640
Регистрация: 20.07.2013
Сообщений: 6,017
13.04.2015, 17:03
Что-то не получается у меня из этого
C++
1
2
3
4
5
6
7
8
9
10
11
double y (double a, double x, double eps)
{
  double yn = a;
  double yn1 = 0.5*(yn-x/yn);
  while (fabs(yn1*yn1-yn*yn) >= eps)
  {
    yn = yn1;
    yn1 = 0.5*(yn-x/yn);
  };
  return yn1;
}
сделать работоспособную рекурсию.

Например, в случае
C++
1
y(5, 7, 0.001);
при попытке использования рекурсии (если правильно ее применил в данной задаче) происходит переполнение стека.
Без рекурсии нужно 40588 итераций для получения результата.

И как вообще объединить рекурсию и точность без заранее известного количества шагов (кол-ва итераций)?

P.S.: возможно, я просто туплю.
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.04.2015, 17:29
Цитата Сообщение от gunslinger Посмотреть сообщение
И как вообще объединить рекурсию и точность без заранее известного количества шагов (кол-ва итераций)?
Вопрос к препу, задавшему задачу.
Да, и тупит он.
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.04.2015, 17:59
Цитата Сообщение от _Ivana Посмотреть сообщение
Задача тривиальная
И причем тут Haskell?
Зашли в ветку плюсов - ну и тривиальте на них. Или молчите уж.
1
13.04.2015, 18:07

Не по теме:

Если облажались с претензиями к преподу, то как же не перенаправить их на кого-то еще :)

0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.04.2015, 18:15
Ждем реализацию на плюсах.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
13.04.2015, 18:43
Окей, только вечером дома после работы.

Добавлено через 26 минут
Натривиалил на плюсах, специально для любителей халявы и незаслуженных претензий к преподам, а также им сочувствующих и потворствующих. От плюсовости менее тривиально не стало.
C++
1
2
3
4
5
6
double myabs (double x) {return x<0 ? -x : x;}
 
double task (double y, double z, double x, double e)
    {return (myabs(y*y-z*z) < e) ? z : task (z, (z+x/z)/2, x, e);}
 
int main() {cout << task (10, 5, 7, 0.001); return 0;}
1
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
13.04.2015, 19:50
Вот и славно.

Не по теме:

А вот чего вы за препов обиделись? :scratch:

0
13.04.2015, 20:06

Не по теме:

Славного мало - халявщик ТС опять получил кота без усилий, даже не удосужившись формулы набрать ТЕХом а не картинкой, абстрактный препод получил незаслуженные претензии, я также получил претензии, причем за их выражение даже было высказано спасибо :D - это все бесславные будни киберфорума, какой он есть сейчас, к сожалению.

ЗЫ Я не за препов, и сам не преп, я просто за правду и здравомыслие.

0
88 / 84 / 31
Регистрация: 18.11.2013
Сообщений: 390
13.04.2015, 20:13
Цитата Сообщение от gunslinger Посмотреть сообщение
Что-то не получается у меня из этого
...
сделать работоспособную рекурсию.
всё нормально,
в самом начале подключение
#pragma comment(linker,"/STACK:1024000000")
исправит ситуацию, выделив под стек 1гб
1
13.04.2015, 20:13

Не по теме:

А я за соответствие кода тематическому разделу.
Код на Haskell выпилен.

0
place status here
 Аватар для gunslinger
3187 / 2221 / 640
Регистрация: 20.07.2013
Сообщений: 6,017
13.04.2015, 23:22
_Ivana, а откуда значение 10 в параметрах?
Вроде как y1 = 0.5*(5+7/5) = 0.5*6.4 = 3.2
И нужно же это значение не самому вычислять, а использовать формулу.
Например,
C++
1
2
double a = 5, x = 7, eps = 0.001;
task(0.5*(a+x/a), a, x, eps);
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
13.04.2015, 23:32
gunslinger, с потолка. Там вообще прокатит любое значение, которое не приведет к остановке итераций по условию. И не надо самому ничего вычислять. Если бы госпожа шовинист-модератор не удалила моего хаскельного кота, вы бы увидели как это легко можно задать при вызове функции. А могли бы еще поговорить про то, что, например, вышеприведенная формула вычисляет квадратный корень для любого икс независимо от начального приближения а, а также про различие итеративных и рекурсивных процессов, независимо от рекурсивной формы их реализации. Но см выше - про бесславные будни киберфорума....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.04.2015, 23:32
Помогаю со студенческими работами здесь

Написать код, вычисляющий выражение по заданной формуле (тригонометрические функции)
помогите пожалуйста написать формулу в с++ \frac{1}{4}\left

Написать программу, производящую вычисления по заданной формуле (тригонометрия, простые циклы)
(100+10 cos 0.1)(100+10cos0.2)....(100+10 cos10) Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы,...

Написать функцию , вычисляющую с заданной точноcтью eps, значение y = x^(1/k) по итерационной формуле
если можно с пояснениями. Написать функцию , вычисляющую с заданной точноcтью eps, значение y = x^(1/k) по итерационной формуле y =...

Написать программу для вычислений по заданной формуле
Я с паскалем пока на уровне простых формул синусов и косинусов, помогите с программой, продам душу. Если со вторым всё более менее ясно то...

Написать программу вычисления значения по заданной формуле
Пожалоста помогите немогу розобратса😟


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru