Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Фибаначи через рекурсию

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 22.03.2012, 21:05   #1
Заблокирован
 Сержант
Аватар для Relli
 
Relli скоро будет известенRelli скоро будет известенRelli скоро будет известенRelli скоро будет известенRelli скоро будет известен
Регистрация: 19.01.2011
Сообщений: 168
Популярность: 485
Сказал(а) спасибо: 123
Поблагодарили 67 раз(а) в 48 сообщениях
 
По умолчанию Фибаначи через рекурсию

Предисловие:
Код:
Уважаемые,я только начал изучат азы делфи,и на данный момент читаю Библию Делфи(2-е издание).Там я прочел про рекурсию и пример:
Index := index*Func(Index-1);
как я понял,если мы берем индекс = 5,то будет Index:=5 * (5-1),после = 20*(4-1) и тп и тд...
Ну так вот,решил я написать ряд фибоначчи,решил - сделал,но мне стали интересны еще способы решения данной задачи,и я полез в инет.
Суть:
Код:
function  Tform1.fibrec(n: Integer): Integer;
var
  temp: Integer;
begin
  temp := 0;
  if (n = 0) then temp := 1;
  if (n = 1) then temp := 1;
  if (n > 1) then temp := fibrec(n - 1) + fibrec(n - 2);
    Memo1.Lines.Add(inttostr(temp));
  Result := temp;
end;
Результатом этой функции,при переменной := 10 идет такой результат:

Код:
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
1
1
2
1
3
1
1
2
5
13
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
21
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
1
1
2
1
3
1
1
2
5
13
34
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
1
1
2
1
3
1
1
2
5
13
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
21
55
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
1
1
2
1
3
1
1
2
5
13
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
21
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
1
1
2
1
3
1
1
2
5
13
34
89
Красным цветом отмечены необходимые числа
Что надо:
Код:
1.Откуда лишние числа?
2.Объяснить логику функции(ибо пробывал так: T := (10-1) + (10 - 2),после T := (9-1) + (8 - 2) и тп и тд)

Последний раз редактировалось Relli; 22.03.2012 в 21:07.
  Ответить с цитированием
Пользователь сказал cпасибо:
andrey92575 (19.04.2012)
Старый 23.03.2012, 18:08   #2
Знаток Dark Orbit
 Рыцарь-защитник
Аватар для Mebius
 
Mebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского Союза
Регистрация: 14.06.2010
Сообщений: 584
Популярность: 6626
Сказал(а) спасибо: 86
Поблагодарили 847 раз(а) в 266 сообщениях
Отправить сообщение для Mebius с помощью ICQ Отправить сообщение для Mebius с помощью Skype™
 
По умолчанию Re: Фибаначи через рекурсию

Цитата:
Сообщение от RamsteinsПосмотреть сообщение
Предисловие:
Код:
Уважаемые,я только начал изучат азы делфи,и на данный момент читаю Библию Делфи(2-е издание).Там я прочел про рекурсию и пример:
Index := index*Func(Index-1);
как я понял,если мы берем индекс = 5,то будет Index:=5 * (5-1),после = 20*(4-1) и тп и тд...
Ну так вот,решил я написать ряд фибоначчи,решил - сделал,но мне стали интересны еще способы решения данной задачи,и я полез в инет.
Суть:
Код:
function  Tform1.fibrec(n: Integer): Integer;
var
  temp: Integer;
begin
  temp := 0;
  if (n = 0) then temp := 1;
  if (n = 1) then temp := 1;
  if (n > 1) then temp := fibrec(n - 1) + fibrec(n - 2);
    Memo1.Lines.Add(inttostr(temp));
  Result := temp;
end;
Результатом этой функции,при переменной := 10 идет такой результат:

Код:
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
1
1
2
1
3
1
1
2
5
13
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
21
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
1
1
2
1
3
1
1
2
5
13
34
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
1
1
2
1
3
1
1
2
5
13
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
21
55
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
1
1
2
1
3
1
1
2
5
13
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
21
1
1
2
1
3
1
1
2
5
1
1
2
1
3
8
1
1
2
1
3
1
1
2
5
13
34
89
Красным цветом отмечены необходимые числа
Что надо:
Код:
1.Откуда лишние числа?
2.Объяснить логику функции(ибо пробывал так: T := (10-1) + (10 - 2),после T := (9-1) + (8 - 2) и тп и тд)

ты не правильно понял, следующий повтор будет index:= 20*(20-1)
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Старый 23.03.2012, 19:49   #3
Заблокирован
 Сержант
Аватар для Relli
 
Relli скоро будет известенRelli скоро будет известенRelli скоро будет известенRelli скоро будет известенRelli скоро будет известен
Регистрация: 19.01.2011
Сообщений: 168
Популярность: 485
Сказал(а) спасибо: 123
Поблагодарили 67 раз(а) в 48 сообщениях
 
По умолчанию Re: Фибаначи через рекурсию

Цитата:
Сообщение от MebiusПосмотреть сообщение
ты не правильно понял, следующий повтор будет index:= 20*(20-1)

тоесть,если мы задаем функции значение 5 (Fib(5)),то функция повторится 5 раз?
в этом и есть суть рекурсии?
  Ответить с цитированием
Старый 23.03.2012, 23:28   #4
Знаток Dark Orbit
 Рыцарь-защитник
Аватар для Mebius
 
Mebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского Союза
Регистрация: 14.06.2010
Сообщений: 584
Популярность: 6626
Сказал(а) спасибо: 86
Поблагодарили 847 раз(а) в 266 сообщениях
Отправить сообщение для Mebius с помощью ICQ Отправить сообщение для Mebius с помощью Skype™
 
По умолчанию Re: Фибаначи через рекурсию

Цитата:
Сообщение от RamsteinsПосмотреть сообщение
тоесть,если мы задаем функции значение 5 (Fib(5)),то функция повторится 5 раз?
в этом и есть суть рекурсии?

если б дал линк на пояснение, что за фибоначчи, тогда помог бы
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Старый 24.03.2012, 00:30   #5
Заблокирован
 Сержант
Аватар для Relli
 
Relli скоро будет известенRelli скоро будет известенRelli скоро будет известенRelli скоро будет известенRelli скоро будет известен
Регистрация: 19.01.2011
Сообщений: 168
Популярность: 485
Сказал(а) спасибо: 123
Поблагодарили 67 раз(а) в 48 сообщениях
 
По умолчанию Re: Фибаначи через рекурсию

Цитата:
Сообщение от MebiusПосмотреть сообщение
если б дал линк на пояснение, что за фибоначчи, тогда помог бы

Я написал программу на расчет чисел фибоначчи(я использовал 3 переменные),но решил поискать в инете ее варианты...наткнулся на выше изложеннную функцию()меня заинтьерисовал данный код,т.к. он происходит через рекурсию)кароче разобрал с знакомым,тут алгоритм кривой,баг делфи что ли...там не реальные расчеты идет(в коде,который я выше кинул)
[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 24.03.2012, 01:10   #6
Знаток Dark Orbit
 Рыцарь-защитник
Аватар для Mebius
 
Mebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского Союза
Регистрация: 14.06.2010
Сообщений: 584
Популярность: 6626
Сказал(а) спасибо: 86
Поблагодарили 847 раз(а) в 266 сообщениях
Отправить сообщение для Mebius с помощью ICQ Отправить сообщение для Mebius с помощью Skype™
 
По умолчанию Re: Фибаначи через рекурсию

Цитата:
Сообщение от RamsteinsПосмотреть сообщение
Я написал программу на расчет чисел фибоначчи(я использовал 3 переменные),но решил поискать в инете ее варианты...наткнулся на выше изложеннную функцию()меня заинтьерисовал данный код,т.к. он происходит через рекурсию)кароче разобрал с знакомым,тут алгоритм кривой,баг делфи что ли...там не реальные расчеты идет(в коде,который я выше кинул)
[Ссылки могут видеть только зарегистрированные пользователи. ]

так тебе одно число надо или кучу как ты выше написал?

вообще по сути получается ф-ция fibrec будет зацикливаться до тех пор, пока не станет 1, сначала будет зациклина fibrec(n-1) до того момента, как n станет 1, потом fibrec(n-2), а потом уже сложатся и выползет тебе конечный результат, если я правильно понял, и тебе нужно ОДНО число. то убери мемо.лайнс.адд(темп) из fibrec и вставь в код кнопки мемо.лайнс.адд(инттустр(fibrec(10)))
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Последний раз редактировалось Mebius; 24.03.2012 в 01:17.
  Ответить с цитированием
Старый 24.03.2012, 10:45   #7
Заблокирован
 Сержант
Аватар для Relli
 
Relli скоро будет известенRelli скоро будет известенRelli скоро будет известенRelli скоро будет известенRelli скоро будет известен
Регистрация: 19.01.2011
Сообщений: 168
Популярность: 485
Сказал(а) спасибо: 123
Поблагодарили 67 раз(а) в 48 сообщениях
 
По умолчанию Re: Фибаначи через рекурсию

Mebius, нет,мне нужен весь ряд чисел.
Например у меня вот такой код,который я сам написал:
Цитата:
function Fiba(w : integer) : Integer;
var
a,b,c,i : integer;
begin
a := 0;
b := 1;
For i:= 1 to w do
begin
c := a + b;
b := a;
a := c;
Memo1.Lines.add(inttostr(c));
end;

Если мы объявим значение функции 10,то в мемо выведутся первые 10 чисел фибоначчи:
Цитата:
1
1
2
3
5
8
13
21
34
55

  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Баг] Быстрый перенос флагов с помощью СЕ! -=HamsteR=- Танки-Online 30 28.01.2012 18:22

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 06:31.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net