![]() |
|
#1
|
|||
|
|||
![]() как найти количество сложений для вычисления N-ого числа Фибоначчи?
а вернее,как реализовать? |
#2
|
||||
|
||||
![]() Мда... это которая "1 1 2 3 5 8 13"...?
В голову ничего не приходит, кроме как прокрутить последовательность в цикле, и в цикле это дело оформить... Голова болит ![]() Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj Последний раз редактировалось PhoeniX, 03.04.2009 в 22:02. |
#4
|
||||
|
||||
![]() может тебе нужен порядковый номер конкретного числа в ряду Фибоначчи?
для начала могу подсказать алгоритм)) (я это когда то на плюсах делал, позже попробую код вспомнить) 1) сначала надо определить числа, входящие в ряд, желательно список ограничить наибольшим. 2) а потом уже можно узнать входит ли число в ряд Фи 3) затем: количество сложений = (порядковому номеру в строке или массиве -1); может это и через ж..пу, я еще начинающий.... ![]() |
#5
|
|||
|
|||
![]() через цикл примерно знаю,а как можно применить рекурсию?)
знаю что так сложнее,но преподу пофиг,хотя сам не представляет |
#6
|
|||
|
|||
![]() Код:
function pr(n,n1,n2:integer):integer; begin if n>2 then result:=pr(n-1,n2,n1+n2) else result:=n1+n2; end; lmikle: Хде теги?!! Пример использования для N>2: r:=pr(5,1,1);//Для 5-ого члена последовательности. Дольше думай сам. Последний раз редактировалось Otmorozok, 09.04.2009 в 21:40. |
#7
|
|||
|
|||
![]() Вообще-то, рекурсивную функцию расчета чисел фибоначи можно посмотреть в любом учебнике. Она очень простая.
Код:
// Возвращает Nый элемент ряда фибоначи function Fib(N : Integer) : Integer; begin If N < 3 Then Result := 1 Else Result := Fib(N-1) + Fib(N-2); end; В принципе, сюда можно имплантировать счетчик для подсчета числа сложений. Сделать доп. var-параметр и увеличивать его на 1 в ветке Else. |
#8
|
||||
|
||||
![]() Цитата:
Посмотри тут => http://delphi-lubitel.ucoz.ru ![]() |
#9
|
||||
|
||||
![]() Цитата:
|
#10
|
||||
|
||||
![]() Цитата:
|
#11
|
||||
|
||||
![]() С твоего рекламо-сайта:
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function fib(n:integer):integer; begin if n<2 then fib:=1 else fib:=fib(n-1)+fib(n-2); end; procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i := 1 to 20 do label1.Caption := label1.Caption + Inttostr(fib(i))+', '; end; end. И чем это лучше ответа?: Цитата:
Иными словами, ответ уже ранее подсказали http://www.delphisources.ru/forum/sh...85&postcount=7, но ты все равно продолжаешь впихивать свой сайт... Последний раз редактировалось Konrad, 18.10.2010 в 17:41. |