Уважаемые,я только начал изучат азы делфи,и на данный момент читаю Библию Делфи(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 идет такой результат:
Уважаемые,я только начал изучат азы делфи,и на данный момент читаю Библию Делфи(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 идет такой результат:
если б дал линк на пояснение, что за фибоначчи, тогда помог бы
Я написал программу на расчет чисел фибоначчи(я использовал 3 переменные),но решил поискать в инете ее варианты...наткнулся на выше изложеннную функцию()меня заинтьерисовал данный код,т.к. он происходит через рекурсию)кароче разобрал с знакомым,тут алгоритм кривой,баг делфи что ли...там не реальные расчеты идет(в коде,который я выше кинул)
[Ссылки могут видеть только зарегистрированные пользователи. ]
Я написал программу на расчет чисел фибоначчи(я использовал 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.
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 чисел фибоначчи: