C
CRESTEEN
помогите пожалуйста.
Язык C++
Вычислить искомое выражение двумя способами. В обоих случаях расчет выражения должен осуществляться с использованием написанных функций – рекурсивной и нерекурсивной. Предполагается, что значения параметров удовлетворяют заданным ограничениям. Чаще всего параметр n – целый, а параметр x – вещественный. Результат должен быть вещественным типа double.
sin(a-sin(2a-...sin(na)...)),n>0, a любое число.
вот мой код. нужно исправить ошибку в рекурсии. и избавиться от переменной long now. не могу понять как сделать. запуталась. помогите если не трудно. заранее спасибо.
Язык C++
Вычислить искомое выражение двумя способами. В обоих случаях расчет выражения должен осуществляться с использованием написанных функций – рекурсивной и нерекурсивной. Предполагается, что значения параметров удовлетворяют заданным ограничениям. Чаще всего параметр n – целый, а параметр x – вещественный. Результат должен быть вещественным типа double.
sin(a-sin(2a-...sin(na)...)),n>0, a любое число.
вот мой код. нужно исправить ошибку в рекурсии. и избавиться от переменной long now. не могу понять как сделать. запуталась. помогите если не трудно. заранее спасибо.
C++:
#include "stdafx.h"
#include "conio.h"
#include "math.h"
#include <iostream>
long now;//вспомогательная переменная
double recursion(long n, long a)//находит значение используя рекурсию
{
now--;
if (n==1)
return sin((n-now)*a*1.0);//если 1 то выводим значение
return sin(a*(n-now)-recursion(n-1,a)*1.0);//если нет то функция вызывает сама себя
}
double norecursion(long n, long a)//находит значение не используя рекурсию
{
double result=sin(a*n*1.0),pre;
for (int i=1;i<n;i++)
{
pre=result;//пошагово находит результат каждого действия
result=sin((n-i*1.0)*a-pre);
}
return result;
}
int _tmain(int argc, _TCHAR* argv[])
{
long n=1;
long a=1;
double res;
printf("Computing the expression sin(a-sin(2a-...sin(n*a)...))\n");
printf("Input variable a\n");
std::cin>>a;
printf("Input variable n\n");
std::cin>>n;
now=n;
res=recursion(n,a);
std::cout<<res<<"\n";
res=norecursion(n,a);
std::cout<<res;
getch();
return 0;
}