Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсия 
V
    Опции темы
XenOS12
Дата 29.8.2009, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.3.2008
Где: Москва

Репутация: нет
Всего: нет



Можете на данном примере объяснить, как работает рекурсия?

Код

#include <iostream>
using namespace std;
 
unsigned long fibonacci(unsigned long);

int main()
{
    unsigned long result, number;
    cout << "Enter cifra: ";
    cin >> number;
    result=fibonacci(number);
    cout << "Febona4a ("<< number <<") = " << result << endl;
    return 0;
}

unsigned long fibonacci(unsigned long n)
{
    if(n<3)
        return 1;
    else 
        return fibonacci(n-2) + fibonacci(n-1);
}

PM MAIL   Вверх
NightmareZ
Дата 29.8.2009, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 0
Всего: 13



Цитата(XenOS12 @  29.8.2009,  20:59 Найти цитируемый пост)
Можете на данном примере объяснить, как работает рекурсия?

Для того, чтобы понять рекурсию, нужно сначала понять рекурсию.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
azesmcar
Дата 29.8.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(XenOS12 @  29.8.2009,  20:59 Найти цитируемый пост)
Можете на данном примере объяснить, как работает рекурсия?

А в книже, из которой ты это переписал ничего не объяснено?

PM   Вверх
XenOS12
Дата 29.8.2009, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.3.2008
Где: Москва

Репутация: нет
Всего: нет



Ну там написано, типо это рекурсия, но как она работает - ни слова...
PM MAIL   Вверх
zim22
Дата 29.8.2009, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(XenOS12 @  29.8.2009,  20:59 Найти цитируемый пост)
Можете на данном примере объяснить, как работает рекурсия?

пользуйся поиском по форуму
http://forum.vingrad.ru/forum/topic-263727...сия-разбор.html


--------------------
PM MAIL   Вверх
XenOS12
Дата 29.8.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.3.2008
Где: Москва

Репутация: нет
Всего: нет



Всё равно не понимаю smile Вот я хочу, чтобы при вводе числа, например, "12" выводились числа каждый раз на одно меньше "11, 10, 9, 8..." Как это сделать? Покажите пожалуйста.

Код

#include <iostream>
using namespace std;
 
unsigned long bred(unsigned long);

int main()
{
    unsigned long result, number;
    cout << "Enter cifra: ";
    cin >> number;
    result=bred(number);
    return 0;
}

unsigned long bred(unsigned long n)
{
    if(n<=1)
        return 0;
    else 
        cout << n-1 << endl;
        return (n-1);
}




Это сообщение отредактировал(а) XenOS12 - 29.8.2009, 21:54
PM MAIL   Вверх
IKM2007
Дата 29.8.2009, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Код

#include <iostream>
void f(int x)
{
if(!x)
return;
std::cout<<x<<std::endl;
f(x - 1);
}
void main()
{
f(12);
}


Добавлено @ 22:03
XenOS12, во первых почему твоя функция возвращает unsigned long? ведь возвращенное значение ты нигде не используешь(пока не мере нет надобности).

И в коде 
Код

unsigned long bred(unsigned long n)
{
    if(n<=1)
        return 0;
    else //здесь незачем писать else
        cout << n-1 << endl;
        return (n-1);

}


вместо return (n - 1) пиши bred(n-1). Принцип рекурсии многократный вызов функции, но чтобы вызовы не были бесконечными, надо выбрать "базу", здесь "база" числа меньше или равные одному:
Код

f(n<=1)
        return 0;


то есть при каждом вызове параметр функции становиться меньше на один, и в итоге он равняется одному и работает оператор return 0.

Это сообщение отредактировал(а) IKM2007 - 29.8.2009, 22:04


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
XenOS12
Дата 29.8.2009, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.3.2008
Где: Москва

Репутация: нет
Всего: нет



Ещё раз извиняюсь, но что значит это:

Код

if(!x)
return;


и я читал, что функцию main лучше делать с типом возврата int...
PM MAIL   Вверх
IKM2007
Дата 29.8.2009, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Цитата(XenOS12 @  29.8.2009,  22:18 Найти цитируемый пост)
if(!x)return;

тоже самое, что и
Код

if(x == 0)
return;



Цитата(XenOS12 @  29.8.2009,  22:18 Найти цитируемый пост)
и я читал, что функцию main лучше делать с типом возврата int...

Да, правильно, так программа более переносимая становиться. Это только у меня такая привичка писать void.  smile 


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
XenOS12
Дата 29.8.2009, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.3.2008
Где: Москва

Репутация: нет
Всего: нет



IKM2007, ооо, спасибо большое, объяснил так, что я понял smile
PM MAIL   Вверх
IKM2007
Дата 29.8.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: 3
Всего: 40



Тогда ставь тему решенной, в правом верхнем углу.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
XenOS12
Дата 29.8.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.3.2008
Где: Москва

Репутация: нет
Всего: нет



Готово))))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.