Далеко не элементарщина....

Тема в разделе "Общие вопросы по С и С++", создана пользователем Mcicool, 4 май 2006.

  1. Mcicool

    Mcicool Гость

    [​IMG]

    Тут я вообще не понимаю, что надо делать...
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Обычная последовательность - следующий член вычисляется по предыдущим. Хочешь через рекурсию, хочешь - последовательно. Только подумать надо самому немножко.

    Посчитай сначала ручками V(5), например, для понимания о чем речь.
     
  3. ZZmiy

    ZZmiy Гость

    :) Это у меня глюки, или последовательности состоят из нулей ? :blink:
     
  4. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Гы, кстати да :blink:
     
  5. Barmutik

    Barmutik Гость

    По моему глюк условия...
     
  6. Mcicool

    Mcicool Гость

    Хмм, мдя, а может быть так и надо, чтобы программа в итоге показывала, что каждое число 0.

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

    ZZmiy Гость

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

    Код (Text):
    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);
    }

    З.Ы. Ну и, конечно, стоит уточнить начальные условия :)
     
  8. Mcicool

    Mcicool Гость

    А если не через рекурсию, то как же ???
     
  9. ZZmiy

    ZZmiy Гость

    Хоть немножко подумав... :blink:
     
  10. Mcicool

    Mcicool Гость

    Да я просто совсем этой темы не понимаю... (((
     
  11. Trupik

    Trupik Гость

    <!--QuoteBegin-Mcicool+7:05:2006, 00:45 -->
    <span class="vbquote">(Mcicool @ 7:05:2006, 00:45 )</span><!--QuoteEBegin-->Да я просто совсем этой темы не понимаю... (((
    [snapback]35151" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Какой именно?
     
  12. ru_looking_for

    ru_looking_for Гость

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

    Код (Text):
    #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;
    }
     
  13. Mcicool

    Mcicool Гость

    Большое всем спасибо, тему можно завкрывать!
     
Загрузка...

Поделиться этой страницей