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

Рекурсивная функция

08.05.2015, 16:08. Просмотров 363. Ответов 7
Метки нет (Все метки)

Задание: Составить программу для счисления сумы К членов строки, где К определяется ||Uk| -|Um||< е и е - наперед задана точность исчисления и m=k+1. Х может принимать любое значение в диапазоне который приведено в условии конкретной задачи. При составлении программы использовать рекурсивную функцию для исчесления Um с помощь рекуррентной формулы Um=f(Um-1):

Задача на первом скрине.

Вот собственно что у меня получилось:

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
26
27
28
29
#include <stdio.h>
#include <math.h>
 
float REC(float,int);
int main()
{
    float U1,U2,S,x,eps;
    int N;
    printf("Vkajit x ta eps ");
    scanf("%f%f", &x,&eps);
    U1=x*x;
    N=1;
    S=U1;
while(1)
{  
    N=N+1;
    U2=REC(x,N);
    S=S+U2;
    if (fabs(U1-U2)<eps&&N>2) break;
    U1=U2;
    }
printf("x=%6.2f \n eps=%6.5f \n N=%d \n S=%9.5f",x,eps,N,S);
scanf("%d", &N);
}
float REC(float x, int m)
{ if(m==1)
return x*x;
else return -REC(x,m-1)*x*x*x*x/((2*m-2)*(2*m-1));
}
Хотелось бы понять почему результат при любых значениях такой как на втором скрине

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Миниатюры
Рекурсивная функция   Рекурсивная функция  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2015, 16:08
Ответы с готовыми решениями:

рекурсивная функция
Описать рекурсивную функцию вычисления значения по указанной формуле. Понимаю,...

Рекурсивная функция
Последовательность многочленов определяется рекуррентными соотношениями: Т0(x)...

рекурсивная функция
Составить программу с рекурсивною функцией n!+m! де n=4,m=6.

Рекурсивная функция y=3x+5
Здравствуйте! Помогите написать прогу(или если есть готовое решение буду...

Рекурсивная функция
Есть произведение n сомножителей вида (2*2)/(1*3) * (4*4)/(3*5) * ... Если не...

7
danillas
1 / 1 / 0
Регистрация: 22.12.2014
Сообщений: 21
08.05.2015, 21:31 2
У тебя бесконечный цикл в 14 строке
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
08.05.2015, 21:32 3
Цитата Сообщение от danillas Посмотреть сообщение
У тебя бесконечный цикл в 14 строке
А в 19 выход
В первом приближении работает: http://ideone.com/CaAec8
1
danillas
1 / 1 / 0
Регистрация: 22.12.2014
Сообщений: 21
08.05.2015, 21:35 4
Цитата Сообщение от Tulosba Посмотреть сообщение
А в 19 выход
Вопрос закрыт, не увидел)
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
08.05.2015, 21:39 5
Wasab, судя по твоей картинке с результатами, какие-то проблемы с вводом значений x, eps.
По приведенной мной ссылке на онлайн компилятор такого сбоя не происходит.
0
frankenstein116
0 / 0 / 0
Регистрация: 28.11.2015
Сообщений: 2
28.11.2015, 03:01 6
подскажите что делает 4 строка?
float REC(float,int);
25
float REC(float x, int m)

Что делает эта REC ?? :с

А еще почему
U1=x*x;
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
28.11.2015, 08:24 7
frankenstein116, 4я строка - объявление функции (прототип), с 25ой начинается определение функции (реализация).
U1 можешь посчитать по формуле с картинки.
1
frankenstein116
0 / 0 / 0
Регистрация: 28.11.2015
Сообщений: 2
29.11.2015, 16:23 8
если посчитать по формуле с выше то выходит
U0 *x^4/0

тогда почему мы упускаем U, а еще упускаем деление на 0. (про то что делить на 0 нельзя - знаю... )

в общем захотел научиться чему то новому, нашел такие задачки.... смотрю что такое решают в универх, то есть это достаточно распространенные примеры... но с чего начать вообще не знаю. какие то основы с++ я знаю. тоесть более легки задачки, типу квадратное уровнение, какой то калькуятор могу сделать.

подскажите посоветуйте)

Добавлено через 54 минуты
Предыдущий комент игнорируйте)

_______

float U1,U2,S,x,eps; //за что в этой задаче отвечает eps

U2=REC(x,N); //зачем в скобках что то писать?? по идеи пишется просто название функции и все REC(), а еще как мы можем к какой то переменной присваивать ФУНКЦИЮ??

float REC(float x, int m) //как работает данная функция, вообще не понятно.
{ if(m==1)//тут еще ясно, если переменная равна 1 , то выполняем действия ниже
return x*x; // тут типо мы возвращаемся к действую, которое выполнялось в начале прог.
else return -REC(x,m-1)*x*x*x*x/((2*m-2)*(2*m-1)); // то куда мы тут возврощаемся?? и тут мы функцию умножаем на Х... что это вообще??
}___
0
29.11.2015, 16:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2015, 16:23

рекурсивная функция
Разработать рекурсивную функцию, удаляющую из строки все лишние пробелы....

Рекурсивная функция
Как быть? Мне надо вызывать рекурсивную функцию очень много раз,вплоть до...

Рекурсивная функция
Походу что-то с массивами не то, когда ввожу слишком большое число (15+), то...


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

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

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