Напишите процедуру которая принимает параметр - натуральное число N и выводит первые N чисел Фибоначчи
Какой язык?
Procedure fib; var n, i, a, b: integer; begin read(n); b := 1; for i := 2 to n do begin b := a + b; a := b - a end; if n = 0 then write(0) else write(b); end; begin fib; end.
нужно решение через procedure
Сделал через процедуру
Спасибо большое
Пожалуйста
#include using namespace std; int fib(int n) { if (n < 2) return n; else return fib(n - 1) + fib(n - 2);} int main() { int n; cin >> n; cout << fib(n);</span> return 0; }
Попробуйте ввести 45. Программа будет выполнятся очень долго
Странно, почему рекурсивный алгоритм выполняется дольше?
Потому что вызов одной функции влечет за собой еще 2
Например если f(5), то будут вызываться f(4), f(3), f(3), f(2), f(2), f(1)
И уже, как видно, идут повторные вызовы функции
Попробуйте использовать кэшированную рекурсию
Хорошо