Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2009, 22:13   #1
rest
Пользователь
 
Аватар для rest
 
Регистрация: 01.03.2009
Сообщений: 11
По умолчанию Рекурсия Builber C++ 6

Вот мне нужно написать рекурсивную ф-цию. на Builber C++ 6
не могу что-то придумать
rest вне форума Ответить с цитированием
Старый 01.03.2009, 22:32   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Так вроде:
Код:
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;

double fun(int i, int n)
{
 if(i==n) return sqrt(i);
 else return i+sqrt(fun(i+1,n));
}

int main(){
int n;
double rez;
cin>>n;
rez = fun(0,n);
cout<<rez;
getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.03.2009, 18:46   #3
rest
Пользователь
 
Аватар для rest
 
Регистрация: 01.03.2009
Сообщений: 11
По умолчанию

что-то здесь не верно. прибольших n результат совпадает с нерекурсивным способом
а нерекурсия у меня правильная я проверял на калькуляторе
а вот при значениях n от 2 до 15 есть расхождения и существенные
подскажите пожалуйста

Последний раз редактировалось rest; 02.03.2009 в 18:52.
rest вне форума Ответить с цитированием
Старый 02.03.2009, 19:07   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Да, действительно.. Там при i==n нужно возвращать i.
Код:
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;

double fun(int i, int n)
{
 if(i==n) return i;
 else return i+sqrt(fun(i+1,n));
}

int main(){
int n;
double rez;
cin>>n;
rez = fun(0,n);
cout<<rez;
getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.03.2009, 19:35   #5
rest
Пользователь
 
Аватар для rest
 
Регистрация: 01.03.2009
Сообщений: 11
По умолчанию

Спасибо огромное
теперь всё работает :-)
rest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия. p@ul Помощь студентам 4 30.12.2009 14:46
рекурсия Vital_k Паскаль, Turbo Pascal, PascalABC.NET 1 08.02.2008 13:09
Рекурсия АнНютик Паскаль, Turbo Pascal, PascalABC.NET 1 29.01.2008 22:50
Рекурсия Pravednik Помощь студентам 3 21.01.2008 14:18
Рекурсия Xeon332 Помощь студентам 5 16.01.2008 20:52