Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
2 / 2 / 3
Регистрация: 06.01.2018
Сообщений: 77
1

Проблема со статическими переменными в рекурсии

03.06.2019, 20:42. Показов 569. Ответов 1

Author24 — интернет-сервис помощи студентам
Собственно, преподаватель требует, чтобы была одна входная переменная А и точность (10^-6)
Функцию написал, но при другом А, счетчик итераций не обнуляется. Скажите что не так написано, уже голову сломал

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
30
31
32
33
34
35
36
37
38
double next(double a, double prev) { //функция для нахождения следующего члена
    return (0.8 * prev) + (a / (5 * pow(prev, 4)));
}
 
double formula(double a, double cur, double next) { //функция, возвращающая значения для текущей итерации для сравнения с 10^-6
    return (1.25 * a * abs(next - cur));
}
 
double foo(double a, double value=pow(10,-6)) {
    static double static_a = a; //введенное пользователем А, инициализация только при первом входе в функцию
    static int k; //счетчик итераций
    
    static double cur; //текущее значение по формуле
 
    if (static_a == a) { //если самый первый проход
        k = 1;
        if (static_a <= 1) cur = (static_a < 0.95) ? static_a : 0.95;
        else if (static_a <= 25) cur = static_a / 5;
        else cur = static_a / 25;
    }
    else {
        cur = a;
    }
 
    double nxt = next(static_a, cur);
 
    cout.setf(ios::left);
    cout << "#" <<setw(2) << k << " Xk=" << setw(9) << cur << " Xk+1=" << setw(9) << nxt << " value: " << setw(9) << formula(static_a, cur, nxt) << endl;
 
    if (!(formula(static_a, cur, nxt) < value)) {
        k++;
        cur = nxt;
        return foo(cur); //вызов рекурсии, но вместо основного А используем текущий член
    }
 
    cout << endl << endl << "#" << k << ": ";
    return formula(static_a, cur, nxt);
}
Задание приложил
Миниатюры
Проблема со статическими переменными в рекурсии  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2019, 20:42
Ответы с готовыми решениями:

Работа со статическими и локальными переменными в классе
такая проблема: пишу программу под MFC. Работа заключается в принятии посылке строки в COM-порт,...

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

Помогите разобраться со статическими переменными в Java
Hi, java programmer! Я пытаюсь создать и показать окно. Текст программы такой: import...

> как правильно работать со статическими переменными
пишу сайт простой магазин, пишу класс шаблонизатора. каждый раз когда запрашивается любая страница...

1
2 / 2 / 3
Регистрация: 06.01.2018
Сообщений: 77
04.06.2019, 19:31  [ТС] 2
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
30
31
32
double foo(double a, double value=pow(10,-6)) {
    static double static_a = a; //введенное пользователем А, инициализация только при первом входе в функцию
    static int k; //счетчик итераций
    
    static double cur; //текущее значение по формуле
 
    if (static_a == a) { //если самый первый проход
        k = 1;
        if (static_a <= 1) cur = (static_a < 0.95) ? static_a : 0.95;
        else if (static_a <= 25) cur = static_a / 5;
        else cur = static_a / 25;
    }
    else {
        cur = a;
    }
 
    double nxt = next(static_a, cur);
 
    cout.setf(ios::left);
    cout << "#" <<setw(2) << k << " Xk=" << setw(9) << cur << " Xk+1=" << setw(9) << nxt << " value: " << setw(9) << formula(static_a, cur, nxt) << endl;
 
    if (!(formula(static_a, cur, nxt) < value)) {
        k++;
        cur = nxt;
        return foo(cur); //вызов рекурсии, но вместо основного А используем текущий член
    }
    else {
        cout << endl << endl << "#" << k << ": ";
        k -= (k - 1); //обнуляем счетчик
    }
    return formula(static_a, cur, nxt);
}
0
04.06.2019, 19:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2019, 19:31
Помогаю со студенческими работами здесь

Проблема со статическими страницами
При создании статических страниц через админку движка, пишет что страница создана и всё классно, и...

Проблема с переменными
Я недавно начал изучать c++ и решил создать небольшой текстовый файтинг. Я столкнулся с небольшой...

Проблема с переменными
Доброго времени суток, возникла проблема: &lt;?php $a=&quot;123&quot;; ?&gt; &lt;form&gt; &lt;input type=&quot;button&quot;...

Проблема с переменными
У меня есть переменная $shop в ней хранятся все данные о магазинах.Так же есть переменная $distanc...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru