Informatică, întrebare adresată de dinesculidia, 8 ani în urmă

Subprogram recursiv care determină numărul de divizori ai unui număr natural n.

Răspunsuri la întrebare

Răspuns de oklezgo7
1

Răspuns:

#include <iostream>

using namespace std;

int numDivisors(int n, int i) {

// Cazul de oprire: i este mai mare decât n

if (i > n) {

return 0;

}

// Dacă i este divizor al lui n, se adaugă 1 la numărul de divizori

// și se continuă procesarea cu următorul divizor posibil

if (n % i == 0) {

return 1 + numDivisors(n, i + 1);

}

// Altfel, se ignoră i și se continuă procesarea cu următorul divizor posibil

return numDivisors(n, i + 1);

}

int main() {

int n;

cout << "Introduceți numărul pentru care doriți să determinați numărul de divizori: ";

cin >> n;

cout << "Numărul de divizori ai lui " << n << " este " << numDivisors(n, 1) << endl;

return 0;

}

Explicație:

Această funcție numDivisors utilizează o abordare recursivă pentru a determina numărul de divizori ai lui n. Funcția primește n și un îndice i ca parametri. În fiecare apel recursiv, se verifică dacă i este divizor al lui n. Dacă da, se adaugă 1 la numărul de divizori și se continuă procesarea cu următorul divizor posibil (i + 1). Dacă nu, se ignoră i și se continuă procesarea cu următorul divizor posibil. Cazul de oprire este atins când i devine mai mare decât n, ceea ce înseamnă că s-au verificat toți posibilii divizori și se poate întoarce numărul final de divizori.


dinesculidia: Mersi!
Alte întrebări interesante