Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2012, 09:42   #1
Kirill43rus
 
Регистрация: 07.01.2012
Сообщений: 5
Печаль Сумма ряда (рекурсия)

Не могу понять, как решить задачу с помощью рекурсии.
Пусть x1=x2=x3=1; xi=x(i-1)+x(i-3); i=4,5...
Найти сумму от i=1 до i=100 xi/2^i
Из наработок:
1) нахождение xi с помощью рекурсии:
PHP код:
int xi(int i)
{
    if (
0) return 0;
    if ((
== 0) || (== 1) || (== 2)) return 1;
    return 
xi(i-1) + xi(i-3);

2) возведение в степень с помощью рекурсии:
PHP код:
double power(double xdouble n
{
    if(
n==0) return 1;
    if(
n<0) return power(1.0/x,--n);
    return 
x*power(x,n-1);

А вот дальше не знаю как их объеденить и найти сумму.
Kirill43rus вне форума Ответить с цитированием
Старый 16.03.2012, 10:55   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
А вот дальше не знаю как их объеденить и найти сумму.
Код:
   public double summa()
        {
            double sum = 0;
            for (int i = 0; i < 100; i++)
            {
                sum += xi(i) / power(2, i);
            }
            return sum;
        }
Хотя я и не уверен что double вместит в себя 2^100
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 16.03.2012, 11:35   #3
Kirill43rus
 
Регистрация: 07.01.2012
Сообщений: 5
По умолчанию

Проблема в том, что циклом пользоваться нельзя. Нужно решить эту заадачу только с помощью рекурсии.
Kirill43rus вне форума Ответить с цитированием
Старый 16.03.2012, 20:02   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
Нужно решить эту заадачу только с помощью рекурсии.
Код:
  public double RecursSumma(int ii)
        {

            if (ii == 0) return 1;
            else
                return RecursSumma(ii-1) + (xi(ii) / power(2,ii));
        }
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 12.04.2012, 18:57   #5
Kirill43rus
 
Регистрация: 07.01.2012
Сообщений: 5
По умолчанию

Препод полностью забраковал эту программу. Решение задачи должно быть в одной функции, ну с этим я как-нибудь сам разберусь.
Помощь нужна в этой части:
PHP код:
int xi(int i

    if (
0) return 0
    if ((
== 0) || (== 1) || (== 2)) return 1
    return 
xi(i-1) + xi(i-3); 

При вычислении xi функция каждый раз вычисляет xi-1 и xi-3. Нужно сделать чтобы функция сохраняла каждое значение xi и при вычислении использовала его.
Kirill43rus вне форума Ответить с цитированием
Старый 12.04.2012, 19:27   #6
Kirill43rus
 
Регистрация: 07.01.2012
Сообщений: 5
По умолчанию

Вот функция для проверки рекурсии через цикл:
PHP код:
double funkcia(int n)
{
    
int i;
    
double *x;
    
float tmpsum=0;
    
x=(double *)calloc(nsizeof(double));
    
x[0]=x[1]=x[2]=1;
    for(
i=3i<ni++)
    {
        
x[i]=x[i-1]+x[i-3];
    }
    for (
i=0i<ni++)
    {
        
tmp x[i] / pow(2.0,i+1);
        
sum += tmp;
    }
    return 
sum;

Kirill43rus вне форума Ответить с цитированием
Старый 05.02.2014, 16:06   #7
Jharvest
 
Регистрация: 04.02.2014
Сообщений: 3
По умолчанию

Какие модули нужно подключать ???
Jharvest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма ряда! sermog Помощь студентам 5 08.04.2011 21:54
Сумма ряда Veina Помощь студентам 0 06.04.2011 19:48
Сумма ряда JustImba Общие вопросы C/C++ 4 26.12.2010 14:29
Сумма ряда alex_triton Общие вопросы C/C++ 6 11.06.2010 14:09
Сумма ряда в С Eovin Общие вопросы C/C++ 14 20.03.2010 12:27