Informatică, întrebare adresată de lascocatalin, 9 ani în urmă

In C++.Se consideră un număr natural K. Să se scrie o funcţie recursivă pentru a determina cel
mai
mic număr al şirului Fibonacci care î-l depăşeşte pe K.
Şirul Fibonacci se defineşte astfel: X 0 = 0; X 1 =1; X n =X n-1 + X n-2 ( n 2).

Eu am facut asa, dar nu imi arata rezultatul dorit.
#include
using namespace std;
int a[100], i, nr;
int fib(int n)
{
if(n==1 || n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
int minim(int k, int nr)
{
i=nr;
if(a[i]>k || a[i-1] {
return a[i];
}
else
nr--;
return minim(k,nr);
}
int main()
{
int n, k;
cout << "n="; cin >> n;
for(i=1;i<=n;i++)
{
a[i]=fib(i);
}
for(i=0;i<=n;i++)
cout << a[i] << " ";
cout << endl;
cout << "k="; cin >> k;
cout << "numarul minim:" << minim(k,nr);
return 0;
}


grigore2018: Am creat codul dat in Pascal:
grigore2018: var
k, i: integer;

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

begin
readln(k);
i := 1;
while(fib(i) <= k) do
begin
i := i + 1;
end;
writeln(fib(i));
end.

Răspunsuri la întrebare

Răspuns de grigore2018
1

Răspuns:

C++:

int n, i = 2, f1 = 0, f2 = 1, c;

 cin >> n;

 

 while (i <= n)

 {

   c = f1 + f2;

   f1 = f2;

   f2 = c;

   i++;

 }

 if (n<=1)

   cout<<n;

 else

   cout << c;

Pascal:

var

k, i: integer;

function fib(n: integer): longint;

begin

if (n = 1) or (n = 2) then  

fib := 1

else

fib := fib(n - 1) + fib(n - 2);

end;

begin

readln(k);

i := 1;

while(fib(i) <= k) do  

begin

i := i + 1;

end;

writeln(fib(i));

end.


lascocatalin: Ce e scris in C++ trebuie sa fac un subprogram aparte cum am facut la mine? Adica sa nu scriu in int main
Răspuns de boiustef
1

Răspuns:

cu recursie...

Explicație:

#include <iostream>

using namespace std;

int K, x,y;

int caut(int &a, int &b)

{

  if (a+b>K) return a+b;

  else

   {

       int c=a+b;

       a=b; b=c;

       caut(a,b);

   }

}

int main()

{

   cin >> K;

   x=0; y=1;

   cout << caut(x,y);

}


boiustef: de ce la mine arată bine?
lascocatalin: gata am gasit greseala mea
lascocatalin: ms mult
boiustef: poate codul tău îl copii aici sau numai functia caut
boiustef: cu plăcere
boiustef: ce era?
lascocatalin: vorbeam cu un prieten care tot are acest program de pregatit si el a spus ca sa incerc sa schimb semnul inca cand imi aratau erorile de la inceput
lascocatalin: am schimbat si am uitat de el
boiustef: :))), succese
lascocatalin: ms)
Alte întrebări interesante