Algorytm rekurencyjny i wartość n

0

Cześć. Mam mały problem z tym o to kodem i treścią zadania, które brzmi:

Algorytm rekurencyjny można zastosować do obliczenia iloczynu liczby naturalnej n przez wszystkie liczby naturalne dodatnie mniejsze od tej liczby. Taką wartość nazywa się silnią liczby n oznacza jako n!. Napisz program obliczający rekurencyjnie wartość n!
dla n=0
n!= 1
dla n
(n-1)! dla n>0*

I mam ten oto kod.
Czy jest on kompatybilny do tej treści, czy muszę jeszcze coś zmienić?
Za odp, bardzo dziękuje ;)

using namespace std;
int silnia(int n){
    if(n <= 1){
        return 1;
    }
    return n*silnia(n-1);
}
int main(){
    int n;
    cin>>n;
    cout<<silnia(n);
    return 0;
}
2

Owszem odpowiada treści zadania, lecz wg mnie powinna wyglądać inaczej.

  • Da się zapisać w jednym wierszu: int silnia(int n) { return n<=1?1:n*silnia(n-1); }
  • Po drugiej może warto zmienić typy na uint64_t silnia(uint8_t n)
0

Tu fajnie opisali: artykuł. Może rekurencja ogonowa?

1 użytkowników online, w tym zalogowanych: 0, gości: 1