Последовательность чисел Фибоначчи:
Последовательность описывает форму спирали, соответственно, часто встречается в природе. Отношение последовательных чисел Фибоначчи сводится к числу 1,618…, которое называется «золотым сечением». Но сейчас не об этом. Я пока не буду выявлять все полезные и интересные свойства этой последовательности, а приведу пример программы, которая вычисляет число Фибоначчи по его номеру в последовательности.
Определим рекурсивно последовательность (fib – функция вычисления числа Фибоначчи):
Первый вызов функции не рекурсивные, а все следующие – рекурсивные. При каждом вызове функция проверяет аргумент num, если равен 0 или 1, то возвращается num. Если нет, то функция делает два рекурсивных вызова себя же.
Вводить большие числа не рекомендуется, поскольку возрастает количество вызовов. Такие задачи лучше решать через итерации, а не через рекурсию.
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …Она начинается с 0 и 1, каждый следующий член последовательности равен сумме двух предыдущих.
Последовательность описывает форму спирали, соответственно, часто встречается в природе. Отношение последовательных чисел Фибоначчи сводится к числу 1,618…, которое называется «золотым сечением». Но сейчас не об этом. Я пока не буду выявлять все полезные и интересные свойства этой последовательности, а приведу пример программы, которая вычисляет число Фибоначчи по его номеру в последовательности.
Определим рекурсивно последовательность (fib – функция вычисления числа Фибоначчи):
Fib(0) = 0Текст программы:
Fib(1) = 1
Fib(n) = Fib(n-1) + Fib(n-2)
//рекурсивная функция вычисления числа Фибоначчи
//по его номеру
#include <iostream>
using namespace std;
unsigned long fib(unsigned long);
void main()
{
unsigned long result, number;
cout<<"Vvedite celoe chislo: ";
cin>>number;
result = fib(number);
cout<<"Chislo Fibonacci ("<<number<<") = "<<result<<endl;
return;
}
//рекурсивная функция
unsigned long fib(unsigned long num)
{
if(num==0 || num==1)
return num;
else
return fib(num-1) + fib(num-2);
}
Первый вызов функции не рекурсивные, а все следующие – рекурсивные. При каждом вызове функция проверяет аргумент num, если равен 0 или 1, то возвращается num. Если нет, то функция делает два рекурсивных вызова себя же.
Вводить большие числа не рекомендуется, поскольку возрастает количество вызовов. Такие задачи лучше решать через итерации, а не через рекурсию.
