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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2012, 01:24   #1
Blagovidov
Пользователь
 
Регистрация: 18.04.2012
Сообщений: 14
По умолчанию рекурсия

Здравствуйте. Помогите на C++ с помощью рекурсивной функции возвращающей значение вывести значение этой функции. Нужна сама рекурсивная функция. Заранее спасибо
Изображения
Тип файла: png Снимок.PNG (20.3 Кб, 77 просмотров)
Blagovidov вне форума Ответить с цитированием
Старый 22.07.2012, 07:05   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
double f( int i, int n ) {
    if( i > n )
        return 0;
    if( i == n )
        return sqrt( N );
    return sqrt( N ) + f( i + 1, n );
}
double f( int n ) {
    return N / f( n, 1 );
}
не проверял, возможны опечатки
rrrFer вне форума Ответить с цитированием
Старый 22.07.2012, 10:12   #3
Blagovidov
Пользователь
 
Регистрация: 18.04.2012
Сообщений: 14
По умолчанию

Не заработало сразу) но твоя идея дала мне многое) Спасибо большое) поставил тебе весы)
Вот рабочий код:
Код:
double F(double i, double n) {
	if (i == n) {
		return sqrt(i);
	} else {
		return sqrt(i + F(i + 1, n));
	}
}

Последний раз редактировалось Blagovidov; 22.07.2012 в 10:22.
Blagovidov вне форума Ответить с цитированием
Старый 22.07.2012, 10:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Укоротим?
Код:
double F(double i, double n){return (i==n)?sqrt(i):sqrt(i + F(i + 1, n));}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.07.2012, 11:24   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Stilet
Ага, в Си можно писать под в одну строчку, но зачем? - работать оно лучше не будет, читаемость хуже, поддерживать труднее.

при i > n не работает. В задании i вообще нет (там функция с одним аргументом).

А-то если цель - укоротить, то можно еще лишние пробелы выкинуть и double на float Заменить(оно короче на 1 букву) и sqrt 2 раза не писать, а еще 2 скобочки выкинуть, но зачем?
rrrFer вне форума Ответить с цитированием
Старый 23.07.2012, 11:32   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но зачем?
Хотя бы чтоб избавится от одного из return-ов
P.S. Я просто предложил. Не хотите - не надо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия mishanya6 Помощь студентам 1 24.11.2011 11:27
Рекурсия Наташок Паскаль, Turbo Pascal, PascalABC.NET 1 18.04.2011 22:14
Рекурсия на С++ Nitriyc Помощь студентам 0 28.04.2010 17:22
Рекурсия Jasper92 Помощь студентам 1 27.04.2010 16:58
Рекурсия Alexsey1991 Помощь студентам 1 13.04.2010 21:19