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

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

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

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

27.08.2011, 15:16. Просмотров 325. Ответов 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(); }
Благодарю за внимание,и заранее спасибо если обьясните)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2011, 15:16     Непонятная рекурсия
Посмотрите здесь:

Непонятная ошибка - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class CMessage { private: char *Text; char...

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

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

Непонятная ошибка!? - 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++
// 1.cpp : main project file. #include &quot;stdafx.h&quot; #include &lt;cstdio&gt; // бібліотека введення-виводу #include &lt;cstring&gt; //...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
4225 / 2199 / 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;
}
Ваша программа, чтобы запутать кого-то
xillion
0 / 0 / 0
Регистрация: 12.08.2011
Сообщений: 4
27.08.2011, 15:25  [ТС]     Непонятная рекурсия #3
Thinker, спасибо, у меня вопрос к вашему коду:
"...return i ? .. : 0 ...
можно ли знак вопроса заменить на что-то другое? или что знак вопроса означает, я просто больше с чистым си знаком.
и что значит " .. : 0.. "
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.08.2011, 15:27     Непонятная рекурсия #4
Тернарный оператор. Он и в си есть.
Thinker
Эксперт C++
4225 / 2199 / 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;
}
xillion
0 / 0 / 0
Регистрация: 12.08.2011
Сообщений: 4
27.08.2011, 15:30  [ТС]     Непонятная рекурсия #6
Я просто данный оператор не практиковал.
Огромное вам спасибо)) Попрактикую данный оператор)))
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.08.2011, 15:31     Непонятная рекурсия #7
Цитата Сообщение от xillion Посмотреть сообщение
Я просто данный оператор не практиковал.
Огромное вам спасибо)) Попрактикую данный оператор)))
Не совсем, посмотрите аналог выше без ? :
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2011, 15:34     Непонятная рекурсия
Еще ссылки по теме:

Непонятная ошибка - C++
Не могу понять, где неправильно. У меня есть такая матрица А 1 4 2 1 3 6 1 5 2 2 3 5 Мне же её надо преобразовать к такому...

непонятная ошибка - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; main() { float x,pi,s,e,q,n; pi=3.14 ; x= pi/6 ; e=0,0001; s=0 ;

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

непонятная строка !!! - C++
помогите мне .я не понимаю функцию у одной строки .объясните детально если не трудно #include &lt;iostream&gt; using namespace std; /// ...

Непонятная ошибка - C++
Доброго времени суток! Не могу понять в чём ошибка. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void...


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

Или воспользуйтесь поиском по форуму:
xillion
0 / 0 / 0
Регистрация: 12.08.2011
Сообщений: 4
27.08.2011, 15:34  [ТС]     Непонятная рекурсия #8
Все,понял вашу мысль. Еще раз спасибо за помощь!
Yandex
Объявления
27.08.2011, 15:34     Непонятная рекурсия
Ответ Создать тему
Опции темы

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