Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SRF
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 13
#1

Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) - C++

23.11.2013, 23:50. Просмотров 471. Ответов 8
Метки нет (Все метки)

Вычислить с помощью рекурсии и без нее - y(n) = sqrt(1+sqrt(2+...sqrt(n)..
Как выполнить задание с помощью рекурсии?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream.h>
#include <math.h>
    double sum(int);
    double sumr(int);
int main()
{
    int n;
    cout <<"Vvedite n - ";
        cin >> n;
    cout << "y(n) ne rekurs = " << sum(n) << endl;
    return 0;
}
    double sum(int n)
    {
        double y=0, z=0;
        for (int i=n;i>0;i--)
        {
            y=sqrt(z+i);
            z=y;
        }
        return y;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2013, 23:50     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n)))
Посмотрите здесь:
C++ Вычислить значение выражения sqrt (2 + sqrt (2 + sqrt (2 ... sqrt2))), (n-слагаемых)
Дано натуральное число n. Вычислить sqrt(2+ sqrt(5 + sqrt(7...)) C++
Рекурсия: вычисление sqrt(1 + sqrt(2 + ... + sqrt(n))) C++
Рекурсия S=sqrt(1+sqrt(2+sqrt(3+.+sqrt(n) C++
C++ Вычислить y=sqrt(1+sqrt(4+sqrt(9+.+sqrt(36+sqrt(49)
Вычислить: sqrt(k+sqrt(2k+...+sqrt(k(n-1)+sqrt(kn)))) C++
Вычислить: sqrt(3+sqrt(6+.+sqrt(3*(n-1)+sqrt(3*n).) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RQdan
65 / 65 / 17
Регистрация: 26.10.2013
Сообщений: 198
24.11.2013, 00:41     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) #2
C++
1
2
3
4
5
double sumr(int n, int it)
{
if(n==it) return sqrt(it);
 else return sqrt(it+sumr(n,it+1))
}
SRF
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 13
24.11.2013, 01:09  [ТС]     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) #3
Цитата Сообщение от RQdan Посмотреть сообщение
C++
1
2
3
4
5
double sumr(int n, int it)
{
if(n==it) return sqrt(it);
 else return sqrt(it+sumr(n,it+1))
}
LAB9.OBJ : error LNK2001: unresolved external symbol "double __cdecl sumr(int)" (?sumr@@YANH@Z)
Debug/LAB9.exe : fatal error LNK1120: 1 unresolved externals

такие вот дела, что делать?

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
#include <iostream.h>
#include <math.h>
    double sum(int);
    double sumr(int);
int main()
{
    int n;
    cout <<"Vvedite n - ";
        cin >> n;
    cout << "y(n) ne rekurs = " << sum(n) << endl;
    cout << "y(n) rekurs = " << sumr(n) << endl;
    return 0;
}
    double sum(int n)
    {
        double y=0, z=0;
        for (int i=n;i>0;i--)
        {
            y=sqrt(z+i);
            z=y;
        }
        return y;
    }
        double sumr(int n, int it)
{
    if(n==it) 
        return sqrt(it);
    else 
        return sqrt(it+sumr(n,it+1));
}
bars268
7 / 7 / 0
Регистрация: 26.01.2013
Сообщений: 58
24.11.2013, 01:12     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) #4
Цитата Сообщение от SRF Посмотреть сообщение
LAB9.OBJ : error LNK2001: unresolved external symbol "double __cdecl sumr(int)" (?sumr@@YANH@Z)
Debug/LAB9.exe : fatal error LNK1120: 1 unresolved externals

такие вот дела, что делать?
В коде присутствует ссылка на что-то (функцию, переменную, метку), что не может быть найдено компоновщиком в библиотеках или объектных файлах. (MSDN)
caiman
11 / 11 / 1
Регистрация: 17.11.2013
Сообщений: 39
24.11.2013, 02:46     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) #5
Не мучься и не придумывай велосипед. Старая добрая хвостовая рекурсия:
C++
1
2
3
4
5
6
double sumr(int n) {
    if ( n == 1 ) {
        return 1;
    }
    return sumr((n-1) + sqrt(n));
}
Добавлено через 20 минут
Сорри, ребят, не проснулся еще - фигню написал.
HidForce
56 / 56 / 13
Регистрация: 17.11.2012
Сообщений: 1,602
24.11.2013, 02:47     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) #6
caiman, функция sqrt() не может принимать переменные целочисленного типа!
caiman
11 / 11 / 1
Регистрация: 17.11.2013
Сообщений: 39
24.11.2013, 03:13     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) #7
Цитата Сообщение от HidForce Посмотреть сообщение
caiman, функция sqrt() не может принимать переменные целочисленного типа!
Я извинился уже! Не подумавши написал. В любом случае, спасибо за ремарку.
P.S.: То, что я интовую переменную передал, то пол беды - там у меня сама функция нерабочая. Еще раз приношу извинения за необдуманный пост.
RQdan
65 / 65 / 17
Регистрация: 26.10.2013
Сообщений: 198
24.11.2013, 12:17     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) #8
SRF,
Цитата Сообщение от SRF Посмотреть сообщение
такие вот дела, что делать?
в коде у тебя не переписано объявление функции sumr и ее вызов в main - там так и остался один параметр, а надо уже два.
4 double sumr(int, int);
и
11 cout << "y(n) rekurs = " << sumr(n,1) << endl;

Добавлено через 10 минут
P.S. если все же программа будет ругаться на то, что it не число с плавающей точкой, то надо внести небольшое изменение в рекурсию: привести it к типу double
C++
1
2
3
4
5
double sumr(int n, int it)
{
if(n==it) return sqrt(double(it));
 else return sqrt(it+sumr(n,it+1))
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 16:25     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n)))
Еще ссылки по теме:
[C++ Error] Sqrt x.cpp(16): E2268 Call to undefined function 'sqrt'. Что это за ошибка??? C++
C++ Вычислить значение x:=sqrt(a), используя рекуррентную формулу / C++
Вычислить значение x:=sqrt(a), используя рекуррентную формулу / C++ C++
C++ Вычислить 3(sqrt(x-x^2+x^5))
C++ Вычислить функцию sqrt(), разложенную в ряд Тейлора

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

Или воспользуйтесь поиском по форуму:
SRF
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 13
24.11.2013, 16:25  [ТС]     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) #9
RQdan, вопросов нет, спасибо
Yandex
Объявления
24.11.2013, 16:25     Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n)))
Ответ Создать тему
Опции темы

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