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:
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
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.
Răspuns de
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);
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Geografie,
9 ani în urmă