Изчисляване числа от ред на Фибоначи
Редицата съдържаща числа на Фибоначи се формира по следния начин: Първите два члена обикновено имат стойност 1, всеки следващ е равен на сумата от 2-та предхождащи го елемента.
Пример: 1,1,2,3,5,8 ....
Следва примерна програма с решена задача за намиране числа от
ред на Фибоначи чрез итерация:
Да се състави програма, която изчислява числа от ред на Фибоначи. Първите 2 елемента се въвеждат, а всеки следващ е равен на сумата от предходните два елемента.
Програмата да извежда стойността на указан номер елемент от тази редица, както и сумата от 1-вия до указания елемент.
Входни данни: 1-ви и 2-ри елемент и броя елементи - естествени числа [1..50].
Пример: 3,4, 5 Изход: сума 43, 5-ти елемент 18.
#include<iostream>
using namespace std;
int main()//nachalo na programata
{ int pyr,wto,nom,sum,por,ele;//deklarirane na promenliwite
cout<<"Systawete programa, koqto izchislqwa elementi ot redica na Fibonachi. \n";
cout<<"Pyrwite 2 elementa se wywevdat, a wseki sledwash e rawen na sumata \n";
cout<<"ot predhodnite dwa elementa. Programata da izwevda ukazan nomer \n";
cout<<"element ot tazi redica, kakto i sumata ot 1-wiq do ukazaniq element. \n";
cout<<"Whodni danni: 1-wi i 2-ri element i broj elementi - estestweni chisla."<<endl;
cout<<"Primer: 3,4, 5. Izhoden rezultat: suma 43, 5-ti element 18.\n";
cout<<endl;
sum=0;//inicializirane na promenliwata za broj wywedeni
cout<<"Wywedete stojnostta na 1-wiq element [1..10]: ";cin>>pyr;
cout<<"Wywedete stojnostta na 2-riq element [1..10]: ";cin>>wto;
cout<<"Wywedete broj elementi [5..10]: ";cin>>nom;
por=2;//imame wywedeni weche 2 elementa
sum=pyr+wto;//symata ot weche wywedenite 2 elementa
while (por<nom) //cikylot interwala 2 - nom
{//tqlo na cikala she izchislqwa poredniq element i natrupana suma
por++;//uwelichawa s 1 stojnostta na por
ele=pyr+wto; //sledwashiq element e suma ot predhodnite 2
cout<<"Element "<<por<<" e: "<<ele<<endl;
sum+=ele;//uwelichawame sumata s nowopolucheniq element
pyr=wto;//za sledwashata stypka n-2-riq element
wto=ele;//za sledwashata stypka n-1-wiq element
}//kraj na cikyla
cout<<"Natrupanata suma e: "<<sum<<", a element "<<por<<" e rawen na: "<<ele<<endl;
system("pause");
return 0;
} //kraj na programa Fibonachi;
Следва примерна програма с решена задача за намиране числа от
ред на Фибоначи чрез рекурсия:
#include <iostream>
using namespace std;
long have_fib(int nom )
{//tqlo na rekursiwnata funkciq
if (nom<3) { return (1);}
else
{return ( have_fib(nom-1)+have_fib(nom-2)); }
}//kraj na rekursiwnata funkciq Fibonachi
int main()
{ int nom;
cout<<"Da se systawi programa, izpolzwasha rekursiwna funkciq,\n";
cout<<"koqto izchislqwa red na Fibonachi. Chislo s poreden nomer >2\n";
cout<<"se obrazuwa kato sbor ot chislata s poredni nomera n-1 i n-2.\n";
cout<<"Whodni danni: estestweno chislo ot interwala [3 - 43].\n";
cout<<"Primer: 8 izhod 21.\n";
cout<<"Koe chislo ot reda da se izwede [3 - 43]: "; cin>>nom;
if
(nom>2)
{cout<<"Poluchenoto chislo e: "<<have_fib(nom)<<endl;}
else {cout<<"Programata tyrsi chislo s poreden nomer >2.\n";}
system("pause");
return 0;
}//kraj na programa Fibonachi
Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.