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$$