PROGRAMOWANIE I ALGORYTMY

Silnia rekurencyjnie


Zad. 1. Napisz program, który wyznaczy silnię z liczby n sposobem rekurencyjnym.

Rozwiązanie

Wyjaśnienie pojęcia silni zostało opisane w tym artykule.

#include <cstdlib>
#include <iostream>
using namespace std;

long long silnia(int n)
{
 if(n<2)
        return 1; //silnia z 0 i 1 wynosi 1

return n*silnia(n-1); //wywołanie funkcji przez samą siebie ze zmniejszonym argumentem
}

int main()
{
 int n;
 
 cout<<"Podaj liczbę: ";
 cin>>n;
 cout<<"n! = "<<silnia(n)<<endl;

 system("pause");
 return 0;
}

Przeanalizujmy działanie programu dla n = 4;

$$wynik\ =silnia(4)=4\cdot silnia(3)=4\cdot 3\cdot silnia(2) = $$

$$4\cdot 3 \cdot 2\cdot silnia(1) = 4 \cdot 3 \cdot 2\cdot 1 = 24$$