Примерите за рекурсия, които разгледахме в часа:
- Намиране на сумата на числата от 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; }
- Отпечатване на числа от 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 Примери за рекурсия