Примери за рекурсия

Примерите за рекурсия, които разгледахме в часа:

  1. Намиране на сумата на числата от 1 до N
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int sum1(int n)
    {
      if (n==0) return 0;
      return n+sum1(n-1);
    }
    
    int sum2(int x, int n)
    {
      if (x==n) return n;
      return x+sum2(x+1, n);
    }
    
    int main(int argc, char** argv)
    {
      cout<<sum1(5)<<endl;
      cout<<sum2(1, 5)<<endl;
      return 0;
    }
  2. Отпечатване на числа от 1 до N и обратно:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    void print(int n)
    {
      if (n==0) return;
      print(n-1);
      cout<<n<<endl;
    }
    
    void print1(int n)
    {
      if (n==0) return;
      cout<<n<<endl;
      print1(n-1);
    }
    
    void print3(int n)
    {
      print(n);
      print1(n-1);
    }
    
    void print4(int n)
    {
      if (n==1) {
        cout<<1<<endl;
        return;	
      }
      cout<<n<<endl;
      print4(n-1);
      cout<<n<<endl;
    }
    
    void print5(int n, int x)
    {
      if (n==x)
      {
        cout<<x<<endl;
        return;
      }
      cout<<n<<endl;
      print5(n+1, x);
      cout<<n<<endl;
    }
    
    int main(int argc, char** argv) {
    
      cout<<"print(5)\n";
      print(5);
    
      cout<<"print1(5)\n";
      print1(5);
    
      cout<<"print3(5)\n";
      print3(5);
    
      cout<<"print4(5)"<<endl;
      print4(5);
    
      cout<<"print5(5)"<<endl;
      print5(1,5);
    
      return 0;
    }

Моля като коментар обяснете смисъла на кода на тези функции на български.

Публикувано в СИП с етикети . Постоянна връзка.

One Response to Примери за рекурсия

  1. Alexander1 каза:
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
     
    int sum1(int n)
    {
      if (n==0) return 0;  
      return n+sum1(n-1);  //Проверява дали n=0 и ако не е връща като резултат сбора на всички  цели числа  по-малки от n докато n=0
    }
     
    int sum2(int x, int n)
    {
      if (x==n) return n;    //Проверява дали x=n и ако не са връща като резултат сбора на всички цели числа по-големи от х докато х=n
      return x+sum2(x+1, n);
    }
     
    int main(int argc, char** argv)
    {
      cout<<sum1(5)<<endl;
      cout<<sum2(1, 5)<<endl;
      return 0;
    }

Вашият коментар