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

C++ Рекурсия - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.64
Dmitry_Web
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 6
05.02.2012, 19:04     C++ Рекурсия #1
Не подскажите как расписать рекурсивно формулу?
Название: Снимок.JPG
Просмотров: 1222

Размер: 10.5 Кб
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2012, 19:04     C++ Рекурсия
Посмотрите здесь:

РЕкурсия C++
Рекурсия (на С) C++
Рекурсия C++
рекурсия C++
Рекурсия C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.02.2012, 19:19     C++ Рекурсия #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;
}
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
05.02.2012, 19:21     C++ Рекурсия #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 секунд
опоздал
Dmitry_Web
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 6
05.02.2012, 21:47  [ТС]     C++ Рекурсия #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;
}
А тут ответы сходятся.
Dmitry_Web
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 6
08.02.2012, 18:51  [ТС]     C++ Рекурсия #5
С рекурсией падает точность по сравнение с циклами?
Ответы абсолютно одинаковые для 1 и 2.

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

C++ Рекурсия
C++ Рекурсия
Рекурсия C++

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

Или воспользуйтесь поиском по форуму:
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
09.02.2012, 08:59     C++ Рекурсия #9
Цитата Сообщение от Dmitry_Web Посмотреть сообщение
Зачем? Мы же возвращаем тип double в ф-ии.
Затем что корень из 1 будет 1, т.е integer, а не double
Yandex
Объявления
09.02.2012, 08:59     C++ Рекурсия
Ответ Создать тему
Опции темы

Текущее время: 07:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru