Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Далеко не элементарщина....
Форум программистов > Системное программирование > C, С++ и С Builder > Общие вопросы по С и С++
Mcicool


Тут я вообще не понимаю, что надо делать...
grigsoft
Обычная последовательность - следующий член вычисляется по предыдущим. Хочешь через рекурсию, хочешь - последовательно. Только подумать надо самому немножко.

Посчитай сначала ручками V(5), например, для понимания о чем речь.
ZZmiy
blink.gif Это у меня глюки, или последовательности состоят из нулей ? rolleyes.gif
grigsoft
Гы, кстати да smile.gif
Barmutik
По моему глюк условия...
Mcicool
Хмм, мдя, а может быть так и надо, чтобы программа в итоге показывала, что каждое число 0.

Примерно хоть покажите текст программы (через рекурсию желательно), чтобы там покумекал.
ZZmiy
С помощью рекурсии: (хотя, конечно, она тут абсолютно не нужна)

double u(int i)
{

    // тут определяются начальные значения последовательности
    if (i<3)
        return 0;

    double utemp = u(i-1);// чтобы уменьшить число рекурсивных вызовов
    double vtemp = v(i-2);

    return (utemp-u(i-2)*vtemp-v(i-2))/(1+utemp*utemp+vtemp*vtemp);
}

double v(int i)
{
// тут определяются начальные значения последовательности
  if (i < 3)
      return 0;

  double vtemp = v(i-1););// чтобы уменьшить число рекурсивных вызовов
  return (u(i-1)+vtemp)/(abs(u(i-2)-vtemp)+1);
}



З.Ы. Ну и, конечно, стоит уточнить начальные условия wink.gif
Mcicool
А если не через рекурсию, то как же ???
ZZmiy
Хоть немножко подумав... wink.gif
Mcicool
Да я просто совсем этой темы не понимаю... (((
Trupik
Цитата(Mcicool @ 7:05:2006, 00:45 )
Да я просто совсем этой темы не понимаю... (((
*

Какой именно?
ru_looking_for
Вот код без рекурсии. Вместо U1, V1, U2, V2 - подставляешь начальные условия, n - до какого члена считать, а в переменные Un и Vn запишутся конечные значения. Функция вернет true если все нормально или false, если n - недопустимо.

#include <math.h>

bool GetUnVn(double U1, double V1, double U2, double V2, int n, double &Un, double &Vn)
{
  double Ui_1, Vi_1, Ui_2, Vi_2, Ui, Vi;

  Ui_1 = U2;
  Vi_1 = V2;
  Ui_2 = U1;
  Vi_2 = V1;

  if (n < 3)
    return false;

  for (int i = 3; i <= n; i++)
  {
    Ui = (Ui_1 - Ui_2*Vi_1 - Vi_2)/(1 + Ui_1*Ui_1 + Vi_1*Vi_1);
    Vi = (Ui_1 - Vi_1)/(fabs(Ui_2 + Vi_2) + 2);

    Ui_2 = Ui_1;
    Vi_2 = Vi_1;

    Ui_1 = Ui;
    Vi_1 = Vi;
  }

  Un = Ui;
  Vn = Vi;

  return true;
}
Mcicool
Большое всем спасибо, тему можно завкрывать!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.