From 51d955fbdada4400c8efd504d637b4ece6fcee22 Mon Sep 17 00:00:00 2001 From: Stoycho Kyosev Date: Wed, 12 Oct 2022 15:42:41 +0300 Subject: add seminar02 --- Seminar02/recursion.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Seminar02/recursion.cpp (limited to 'Seminar02/recursion.cpp') diff --git a/Seminar02/recursion.cpp b/Seminar02/recursion.cpp new file mode 100644 index 0000000..63f4aa0 --- /dev/null +++ b/Seminar02/recursion.cpp @@ -0,0 +1,33 @@ +#include +#include + +int fib(unsigned x) { + if(x == 0 || x == 1) + return 1; + + return fib(x - 1) + fib(x - 2); +} + +// Малък пример как можем да симулираме рекурсия чрез стек. +int fibStack(unsigned x) { + std::stack s; + s.push(x); + int result = 0; + + while(!s.empty()) { + int currArg = s.top(); + s.pop(); + + if(currArg == 1 || currArg == 0) + ++result; // Еквивалентно на return 1; + else{ + s.push(currArg - 1); // Еквивалентно на fib(x - 1); + s.push(currArg - 2); // Еквивалентно на fib(x - 2); + } + } + return result; +} + +int main() { + std::cout << fib(10) << " " << fibStack(10); +} -- cgit v1.3.1-23-gd82d