14.09.2009, 03:42
|
Прохожий
|
|
Регистрация: 14.09.2009
Сообщения: 1
Репутация: 10
|
|
программа по расчету числа Фибоначчи
Вот такая проблемка возникла. Нужна программа по расчету числа Фибоначчи.
Может кто-нибудь подсказать, в чем тут ошибка?
Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
editN: TEdit;
Label2: TLabel;
Label3: TLabel;
editFib: TEdit;
Button1: TButton;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
private
function Fibona44i (n: byte): double;
public
end;
var
Form1: TForm1;
implementation
function TForm1.Fibona44i(n: byte): double;
begin
if ((n=1)or(n=2)) then
Result := 1
else
// двойной рекурсивный вызов:
// память расходуется катастрофически
Result := Fibona44i(n-1)+Fibona44i(n-2);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
n: byte;
begin
try
n := StrToInt(editN.Text);
except
MessageDlg('От 0 до 255',
mtError, [mbOK], 0);
end;
editFib.Text := FloatToStrF(Fibona44i(n),ffGeneral,6,0);
end;
end.
Admin: Пользуемся тегами!
|