Subprogram recursiv care determină numărul de divizori ai unui număr natural n.
Răspunsuri la întrebare
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.