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;

{tex}wynik\ =silnia(4)=4\cdot silnia(3)=4\cdot 3\cdot silnia(2) = {/tex}

{tex}4\cdot 3 \cdot 2\cdot silnia(1) =5 \cdot 4 \cdot 3 \cdot 2\cdot 1 = 120{/tex}

powrót