![]() |
|
|
#1
|
|||
|
|||
|
как найти количество сложений для вычисления N-ого числа Фибоначчи?
а вернее,как реализовать? |
|
#2
|
||||
|
||||
|
Мда... это которая "1 1 2 3 5 8 13"...?
В голову ничего не приходит, кроме как прокрутить последовательность в цикле, и в цикле это дело оформить... Голова болит , так что может, кто лучше идею даст...Последний раз редактировалось 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. |