План.
        Домашно - зад.
            3 и 4
        Редица на Фибоначи. 
        Най-голям общ делител, най-малко общо кратно. 
        Връщане от рекурсия и използване на променливите
        Рекурсия и използване на глобални променливи
        Домашно - зад 5
            и 6
        
** Редица на Фибоначи (bg)
              (eng)
              (music)
        
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
      
int fib(int n)
{ cout << "Entering fib: n = " << n << "\n";
int f;
if (n <= 2) f = 1;
else f = fib(n - 1) + fib(n - 2);
cout << "Exiting fib: n = " << n
<< " return value = " << f << "\n";
return f;
}int fib(int n)
{ if (n <= 2) return 1;
int fold = 1;
int fold2 = 1;
int fnew;
for (int i = 3; i <= n; i++)
{ fnew = fold + fold2;
fold2 = fold;
fold = fnew;
}
return fnew;
}
** Най-голям общ делител (bg) (eng) [1.2.3]
* Алгоритъм на Евклид за намиране на най-голям общ делителunsigned
        gcd1(unsigned a, unsigned b) 
      { unsigned swap; 
        while (b > 0) { swap = b; b =
        a%b; a = swap; } 
        return a; 
      }
unsigned
        gcd2(unsigned a, unsigned b) 
      { return (0 == b) ? a : gcd2(b, a%b); }
int main() 
      { const unsigned a = 1, b = 125; 
        cout << gcd1(a, b) <<
        endl; 
        cout << gcd2(a, b) <<
        endl; 
        return 0;  
void
        printN(unsigned n) 
      { if (n >= 10) printN(n/10); 
        cout << n%10;; 
      } 
      int main() 
      { unsigned m = 1234; 
        printN(m); 
        return 0; 
      } 
      
* Пресмятане на n! и изследване на ефективността на реализациите [1.2.5]
/* Два варианта за пресмятане на n! [1.2.5] */unsigned k = 0; 
        void printRed2(unsigned long res) 
        {  k++; 
          cout << res << " "; 
          if (k < n) printRed2(res*10); 
          cout << res << " "; 
        }
unsigned
            long res = 1; 
          void printRed3() 
          {  k++; 
            res *= 10; 
            cout << res << "
            "; 
            if (k < n)
            printRed3(); 
            cout << res << "
            "; 
            res /= 10; 
          } 
          
            int main() 
          { 
           printRed1(1,10); cout << endl; 
           printRed2(10);   cout << endl; 
           k = 0; 
           printRed3();     cout << endl; 
           return 0; 
          }