Pereiti prie turinio

Rekomenduojami pranešimai

sveiki.nesuprantu kaip si uzdaviny daryti. gal galetumete kas nos matematiskai papasakot kaip jy daryt reiketu?

 

naturaliuju skaiciu seka sudaroma pagal tokias taisykles:

a1=x

a2=y

ai= ai-1 + ai-2

pradinis duomuo- paskutinis sekos narys z. parasykite programa spausdinti ilgiausiai sekai kuri baigiasi skaiciumi z

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Fibonačio sekos principas - kiekvienas sekos narys yra lygus prieš jį einančių dviejų skaičių sumai. Paprasčiausias pavyzdys: 1, 1, 2, 3, 5, 8, 13, 21, 34 ir t.t. Tokios sekos pirmi du skaičiai gali būti bet kokie.

 

Daugiau taip greit nieko nesugalvoju, tikiuosi padėjau :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

a1 = 1;
a2 = 1;
a3 = a1+a2;
Writeln (a1);
Writeln (a2);
Writeln (a3);
while (a3 != z && a3 < z)
begin
a1 = a2; 
a2 = a3;
a3 = a1+a2;
Writeln (a3);
end;

 

neatsimenu pascalio sintakses, bet sutvarkius turetu veikt, tik jeigu z ivesi toki, kad jis nebus vienas is fibonaci sekos, tai begalinis ciklas uzsisuks. EDIT: del to, kad nebutu begalinis ciklas pridejau while'e salyga, tai dabar jeigu z ivesi ne sekos nari, tai isspausdins viena nari po z ir uzsibaigs.

Redagavo hafnis1324
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jeigu teisingai supratau uzduoti, tai cia siek tiek matematikos pasinaudoti reikia, kad spresti :)

a1 = x

a2 = y

a3 = a2 + a1 = x + y

a4 = a3 + a2 = x + 2y

a5 = a4 + a3 = 2x + 3y

...

tai taip atrodo pati seka, ir manau iskarto matosi, kad kuo mazesne (x, y) pora, tuo ilgesne seka. Tie koeficientai prie x ir y yra fibonaci sekos (Fn) nariai, taigi bendru atveju an seka yra

an = Fn-2x + Fn-1y.

Dabar tam, kad rasti pradinius (x, y) kurie pasiekia skaiciu z, reikia tiesiog didinti skaicius x ir y :). Kai grysiu namo dabaigsiu dar, bet arba cia reikia gilaus matematikos supratimo, arba as ne taip supratau uzduoti...

 

Tai va katik gryzau namo ir prisedes pastebejau, kad viskas paprasciau negu atrode, is pradziu pasirasiau rekurencine fibonaci sekos funkcija, ir po to pastebejau, kad galima pasirasyti an nario rekurencine funkcija, kurios pirmi 2 elementai yra x ir y. Siek tiek terlionu ir turiu visa programele:

program programa;

function F(n:integer):longint;
begin
if (n=1) or (n=2) then F:=1
else F:= F(n-2)+F(n-1);
end;

function a(n, x, y:longint):longint;
begin
if (n=1) then a := x else if (n=2) then a:=y else a := a(n-2, x, y) + a(n-1, x, y);

end;

function ArRasta(x, y, z:longint):boolean;
var i:longint;
     b:boolean;
begin
b := false; i:=3;
while a(i, x, y) <= z do
  begin
  if a(i, x, y) = z then b := true;
  i := i+1;
  end;
ArRasta := b;
end;

var i, z, x, y:longint;
     eiga:boolean;
begin
write("kokio sekos nari nori pasiekti: ");
readln(z);
x:=1; y:=1;
eiga := true;
while eiga do
  begin
  y:=y+1;
  for i:=1 to y do
      if ArRasta(i, y, z) = true then
         begin
         eiga := false;
         x := i;
         end;
  end;
i:=1;
writeln(a(i, x, y));
while a(i, x, y) <> z do
  begin
  i:=i+1;
  writeln(a(i, x, y));
  end;
end. 

zinau, kad galima daug ka graziau pasirasyti, bet kadangi per telefona rasyta, tai nebuvo noro graziai viska daryti... :-D

Redagavo audrius^
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...