Răspuns :
In subprogramul tau variabila d creste dupa ce este apelat f(n,d++) dar nefiind varaibila globala nu o creasca niciodata. Deci, trebuie ++d nu d++, ori programul va apela acelasi f(n,d) la infinit (atata timp cat d-ul initial este mai mic decat n/2). Asa va face ++ inainte sa se reapeleze.
Cu modificarea aceasta obtii divizorii proprii ai numarului 1000 cu apelul f(1000,1). Dar si un 500 inainte deoarece subprogramul verifica de 2 ori d=500. Pentru a rezolva si problema asta trebuie sa modifici d<n/2 in d<=n/2.
Răspuns:
Trebuie ++d, ci nu d++ .
Cu ajutorul acestei modificări obținem divizorii proprii ai
1.000 ===》 apelul f(1.000,1)
d = 500, deoarece subprogramul verifica de 2 ori
Se modifica din d<n/2 in d<=n/2