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

Рекурсия, квадратные корни. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Циклические алгоритмы. Управление циклами. http://www.cyberforum.ru/cpp-beginners/thread143785.html
Организовать процесс угадывания числа: компьютер генерирует случайное число (1…1000), пользователь пытается его угадать за фиксированное число попыток (10). Компьютер должен выводить ответ на каждое число пользователя, говорящий, с какой стороны (большей или меньшей) было названо число. В случае, если пользователь угадал за отведенное число попыток, выйти из процесса угадывания. Помагите...
C++ Граф-карта Добрый день. Не знаю, люда надо писать или нет. Показалось что сюда. Задача: Дано: список точек и описание с какими точками они соединены в каких направленияю. Требуется нарисовать граф ("карту"). Пример: Номер точки лево право вверх вниз http://www.cyberforum.ru/cpp-beginners/thread143772.html
люди я на зачёте C++
Ввести три цифры найти среди них минимальную, две оставшиеся через пробел вывести в текстовый файл . я сделал но не вывел в файл помогите пожалуйста #include<iostream.h> #include<stdlib.h> #include<fstream.h> #include<string.h> class Three { int n; int *p;
C++ где можно бесплатно и без регистрации скачать фильмы на английском с рус. субтитрами
надо для учебы
C++ Циклы и линейные массивы http://www.cyberforum.ru/cpp-beginners/thread143740.html
Найдите все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом третьей цифры. В линейном целочисленном массиве посчитать число смен знака между соседними элементами. Помагите написать код на C++ Заранее благодарен
C++ работа с классами прошу помощи с лабой, вообще вкурить немогу что и как делать:\ Комплексное число, задаваемое своей вещественной и мнимой частями.Обязательны функции члены класса для ввода вывода числа, сложения произведения двух чисел а так же возведения числа в целую степень. З.Ы, программа нужна для среды Borland C++ 3.1 подробнее

Показать сообщение отдельно
Kastaneda
Форумчанин
Эксперт С++
4468 / 2830 / 224
Регистрация: 12.12.2009
Сообщений: 7,199
Записей в блоге: 1
Завершенные тесты: 1
11.06.2010, 08:47     Рекурсия, квадратные корни.
Вот рекурсия. Аналог без рекурсии думаю проблем не создаст?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cmath>
using namespace std;
double resqrt(int,double a=6,double b=2);
int main () {
    cout<<"Enter n : ";
    int n;
    cin>>n;
    cout<<"Answer "<<resqrt(n)<<endl;                            
    system ("pause");
    return 0;
              } 
double resqrt(int n,double a,double b) {
    if (n==1)return (sqrt(a+b));
    double sq=sqrt(a+(b*(resqrt(--n,a+1,b+1))));
    return sq;
}
Вопрос к более опытным людям - почему в строке
C++
1
double sq=sqrt(a+(b*(resqrt(--n,a+1,b+1))));
если написать в параметрах ф-ции не (--n,а+1,b+1), а (--n, ++a, ++b) то результат считает не правильно? Я 20 минут метался между калькулятором и программой, пока не нашел в чем дело )))

Добавлено через 24 минуты
Забыл про время, вот показывает время, прошедшее с начала запуска программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;
double resqrt(int,double a=6,double b=2);
int main () {
    cout<<"Enter n : ";
    int n;
    cin>>n;
    cout<<"Answer "<<resqrt(n)<<endl;
    cout<<"Programm work "<<clock()/CLOCKS_PER_SEC<<" sec"<<endl;                            
    system ("pause");
    return 0;
              } 
double resqrt(int n,double a,double b) {
    if (n==1)return (sqrt(a+b));
    double sq=sqrt(a+(b*(resqrt(--n,a+1,b+1))));
    return sq;
}
Добавлено через 13 часов 24 минуты
Я понял проблему с (--n,а+1,b+1) и (--n, ++a, ++b), в рекурсии вообще так делать нельзя!
 
Текущее время: 11:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru