Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Непонятная рекурсия - C++

27.08.2011, 15:16. Просмотров 334. Ответов 7
Метки нет (Все метки)

Привет всем! нужна небольшая помощь в разьяснении кода.
Дано задание составить прогу:
y=3+6+9+..3*N - составить программу через рекурсию.
Дали исходный код, он работает. Но хотелось бы понять точную мысль его работы. Почему он написан именно так, и можно ли написать как-то по другому.
...
C++
1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <conio.h>
#include <math.h>
float function(int n)
{ if (n<36) return sqrt(n+function(n+3));
   else return 0;
}
int main()
{ printf("y=%.8f\n",function(3)); getch(); }
Благодарю за внимание,и заранее спасибо если обьясните)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2011, 15:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Непонятная рекурсия (C++):

непонятная ошибка - C++
Почему здесь выбивает ошибку? Помогите последнюю лабу сделать) if (x&lt;(*Node)-&gt;l) Add(x,&amp;(*Node)-&gt;l); #include &lt;iostream.h&gt; ...

задача непонятная - C++
Объясните, пожалуйста, что нужно сделать, а то формулу не могу вывести, т.е. что нужно делать и с какой последовательностью. Было бы...

Непонятная ошибка - C++
Прошу помочь. Нижеприведенный фрагмент кода работает, генерирует ключ, варнингов нет. В дебаге все работает отлично, в релизе выдает ошибку...

Непонятная ошибка - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; int i; int fact (int n){ if ( n&lt;1 )...

Непонятная формула - C++
Всем привет, помогите сделать задание, необходимо рассчитать х по следующей формуле, не могу понять что делать после того, когда я вычла...

Непонятная ошибка - C++
Здравствуйте, есть код, в котором два раза выполняется одна и та же последовательность, первый раз выполняется без ошибок, во второй раз...

7
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.08.2011, 15:20 #2
Странный у вас код, я бы так написал:

C++
1
2
3
4
5
6
7
8
9
10
11
long Sum(long i)
{
   return i ? 3*i + Sum(i - 1): 0;
}
 
int main()
{
   std::cout << Sum(5);
   std::cin.get();
   return 0;
}
Ваша программа, чтобы запутать кого-то
1
xillion
0 / 0 / 0
Регистрация: 12.08.2011
Сообщений: 4
27.08.2011, 15:25  [ТС] #3
Thinker, спасибо, у меня вопрос к вашему коду:
"...return i ? .. : 0 ...
можно ли знак вопроса заменить на что-то другое? или что знак вопроса означает, я просто больше с чистым си знаком.
и что значит " .. : 0.. "
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.08.2011, 15:27 #4
Тернарный оператор. Он и в си есть.
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.08.2011, 15:28 #5
Цитата Сообщение от xillion Посмотреть сообщение
Thinker, спасибо, у меня вопрос к вашему коду:
"...return i ? .. : 0 ...
можно ли знак вопроса заменить на что-то другое? или что знак вопроса означает, я просто больше с чистым си знаком.
и что значит " .. : 0.. "
Это логический оператор с тремя операндами. Можно и так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double Sum(int i)
{
   if (i > 0)
      return 3*i + Sum(i-1);
   else
      return 0;
}
 
int main()
{
   std::cout << Sum(5);
   std::cin.get();
   return 0;
}
1
xillion
0 / 0 / 0
Регистрация: 12.08.2011
Сообщений: 4
27.08.2011, 15:30  [ТС] #6
Я просто данный оператор не практиковал.
Огромное вам спасибо)) Попрактикую данный оператор)))
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.08.2011, 15:31 #7
Цитата Сообщение от xillion Посмотреть сообщение
Я просто данный оператор не практиковал.
Огромное вам спасибо)) Попрактикую данный оператор)))
Не совсем, посмотрите аналог выше без ? :
0
xillion
0 / 0 / 0
Регистрация: 12.08.2011
Сообщений: 4
27.08.2011, 15:34  [ТС] #8
Все,понял вашу мысль. Еще раз спасибо за помощь!
0
27.08.2011, 15:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2011, 15:34
Привет! Вот еще темы с ответами:

непонятная ошибка - C++
Здравствуйте. Вот в этой программе у меня пишет ошибку: cpp(60) : error C2065: 'j_max' : undeclared identifier. Хотя если вместо Y...

непонятная ошибка - C++
Начал изучать с++. Все шло хорошо, но потом я столкнулся с проблемой, использовал bass.lib и bass.h. при компиляции выходит такая...

Непонятная ошибка - C++
Пробую написать подключаемый модуль к файловому менеджеру ФАР. Программа, не хочет компилится, затсряла на непонятной ошибке Плагин...

Непонятная ошибка - C++
Всем привет! Вообщем вот функция, которая переводит двоичное число в десятичное, + ещё пару кусков кода, чтобы было понятно, что и откуда...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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