Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
Dmitry_Web
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 6
1

Рекурсия: вычисление sqrt(1 + sqrt(2 + ... + sqrt(n)))

05.02.2012, 19:04. Просмотров 3017. Ответов 8
Метки нет (Все метки)

Не подскажите как расписать рекурсивно формулу?
Название: Снимок.JPG
Просмотров: 1231

Размер: 10.5 Кб
Спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2012, 19:04
Ответы с готовыми решениями:

Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n)))
Вычислить с помощью рекурсии и без нее - y(n) = sqrt(1+sqrt(2+...sqrt(n).. Как...

Цикл: Для числа N вычислить значение следующего выражения: sqrt((1) + sqrt((2) + ... + sqrt(2 * N)))
Как это решить? sqrt((1)+sqrt((2)+..+sqrt(2n)))

Вычислить значение выражения sqrt (2 + sqrt (2 + sqrt (2 ... sqrt2))), (n-слагаемых)
Вычислить значение выражения sqrt (2 + sqrt (2 + sqrt (2 ... sqrt2))),...

Дано натуральное число n. Вычислить sqrt(2+ sqrt(5 + sqrt(7...))
Дано натуральное число n.Вычислить sqrt(2+ sqrt(5 + sqrt(7...)). Под корнями...

Рекурсия S=sqrt(1+sqrt(2+sqrt(3+.+sqrt(n)
Задали написать программу на С++ которая высчитывает...

8
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
Завершенные тесты: 1
05.02.2012, 19:19 2
Так вроде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <math.h>
 
double Force (int n, int m)
{
    if (n==m) return sqrt(n+.0);
    else return sqrt(m+Force (n, m+1));
}
 
 
int main()
{
    int n;
    std:: cin >> n;
    std:: cout << Force (n, 1) << "\n";
    system ("pause");
    return 0;
}
2
R136a1
143 / 112 / 36
Регистрация: 14.04.2011
Сообщений: 261
05.02.2012, 19:21 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cmath>
 
double y(double);
 
int main()
{
        double n;
 
        std::cin >> n;
 
        std::cout << y(n) << std::endl;
 
        return 0;
}
 
double y(double n)
{
        if(n == 1)
                return n;
        else
                return std::sqrt(std::sqrt(n) + y(n-1));
}
Добавлено через 55 секунд
опоздал
1
Dmitry_Web
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 6
05.02.2012, 21:47  [ТС] 4
хм...
получается у меня правильный код?
C++
1
2
3
4
5
double yr(int n)
{
    if(n==1) return 1;
    else return sqrt(yr(n-1)+sqrt(n));
}
При проверке калькулятором ответы не сходятся.
Вот вариант без рекурсии:
C++
1
2
3
4
5
6
7
8
9
10
double y(int n)
{
    double y=0, z=0;
    for(int i=n; i>0; i--)
    {
        y=sqrt(z+i);
        z=y;
    }
    return y;
}
А тут ответы сходятся.
0
Dmitry_Web
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 6
08.02.2012, 18:51  [ТС] 5
С рекурсией падает точность по сравнение с циклами?
Ответы абсолютно одинаковые для 1 и 2.

Добавлено через 1 час 23 минуты
Разобрался, спасибо всем!
Только один вопрос
Цитата Сообщение от Dani Посмотреть сообщение
if (n==m) return sqrt(n+.0);
Зачем?
0
I.M.
567 / 550 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
08.02.2012, 19:30 6
Цитата Сообщение от Dmitry_Web Посмотреть сообщение
Зачем?
Для преобразования типов из int в double
0
Dmitry_Web
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 6
08.02.2012, 20:58  [ТС] 7
Цитата Сообщение от I.M. Посмотреть сообщение
Для преобразования типов из int в double
Зачем? Мы же возвращаем тип double в ф-ии.
Цитата Сообщение от Dani Посмотреть сообщение
double Force (int n, int m)
0
Mayonez
382 / 274 / 53
Регистрация: 26.12.2009
Сообщений: 875
08.02.2012, 21:07 8
Цитата Сообщение от Dani Посмотреть сообщение
#include <math.h>
cmath!!!
1
panicwassano
594 / 562 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
09.02.2012, 08:59 9
Цитата Сообщение от Dmitry_Web Посмотреть сообщение
Зачем? Мы же возвращаем тип double в ф-ии.
Затем что корень из 1 будет 1, т.е integer, а не double
0
09.02.2012, 08:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2012, 08:59

[C++ Error] Sqrt x.cpp(16): E2268 Call to undefined function 'sqrt'. Что это за ошибка???
Когда я испльзую функцию sqrt() компилятор выводит: Sqrt x.cpp(16): E2268 Call...

Вычислить y=sqrt(1+sqrt(4+sqrt(9+.+sqrt(36+sqrt(49)
Помогите пожалуйста с решением данной задачи. ...

Вычислить: sqrt(3+sqrt(6+.+sqrt(3*(n-1)+sqrt(3*n).)
Здравствуйте! Вычислить: sqrt(3+sqrt(6+...+sqrt(3*(n-1)+sqrt(3*n)...))) ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru