Консультация № 116230
27.12.2007, 21:03
0.00 руб.
0 2 2
Здравствуйте уважаемые эксперты..

Немогу сообразить задачку на цыклы, спасайте.

Числа Фибоначчи (fn) определяются формулами: f0=f1 = l, fn=fn-2+fn-1 n=2,3... Составить программу вычисления суммы всех чисел Фибоначчи , которые не превосходят заданного числа m.

Обсуждение

Неизвестный
27.12.2007, 21:29
общий
это ответ
Здравствуйте, Брель В.А!
Я не совсем понял условие: надо найти именно <b>сумму</b> чисел Фибоначчи, которая меньше заданного m или максимальное число.
Ниже решения для обоих вариантов (код Delphi):

<b>function</b> F(<b>var</b> a,b : integer; save:boolean):integer;
<b>begin</b>
F := a+b;
<b>if</b> save <b>then</b>
<b>begin</b>
a := b;
b := <b>result</b>;
<b>end</b>;
<b>end</b>;

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b> a,b,m,sum : integer;
<b>begin</b>
a := 0;
b := 1;
sum := 0;
m := 1600;

<i><font color=gray>{если <b>сумма</b> чисел меньше m}</font></i>
<b>while</b> sum + F(a,b,false) <= m <b>do</b>
sum := sum + F(a,b,true);
ShowMessage(IntToStr(sum));
ShowMessage(IntToStr(b));

<i><font color=gray>{если нужно найти наибольшее число Фибоначчи, которое меньше m:
<b>while</b> F(a,b,false) <= m <b>do</b>
F(a,b,true);
ShowMessage(IntToStr(b))
}</font></i>

<b>end</b>;

Удачи!
давно
Старший Модератор
31795
6196
28.12.2007, 16:32
общий
это ответ
Здравствуйте, Брель В.А!

Смотрите приложение вариант на паскале.
Удачи!

Приложение:
program q116230; var a,b,c,m:integer; s:longint; begin {вводим число} repeat write(‘Enter M:‘);readln(m); until (m>0)and(m<30000); {начальные значения} a:=1; b:=1; writeln(a:6,chr(13),chr(10),b:6); s:=a+b; {ищем все числа } while a<=m do begin c:=a; a:=a+b; b:=c; if a<=m then s:=s+a; writeln(a:6,s:10); end; writeln(‘Сумма:‘,s); end.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа