edutecnica

Esercizio 3        

Scrivi un algoritmo che acquisisca una coppia di interi n ed m con n≥m che sia in grado di eseguire in modo ricorsivo il prodotto
n·(n-1) ·… ·m
Se n=m deve essere restituito n . Si tratta, dunque, di calcolare un fattoriale parziale.
Il programma richiesto potrebbe avere il seguente aspetto

#include<iostream>
using namespace std;

int prod(int m, int n){
   if (m == n) {
   return n;
   } else {
      int aux = prod(m, n - 1);
      int risultato = n * aux;
      cout<<aux<<"\t" <<risultato<<endl;
      return risultato;
   }//if
}//prod

main(){
   cout<<prod(3, 6);
}//main

Se si verifica m=n viene ritornato il valore di n.
In caso contrario viene attivata la ricorsività utilizzando una variabile ausiliaria (aux) .
Inizialmente aux=m e ad ogni ciclo incrementa diventando m·(m+1) come si vede nella stampa effettuata a video durante l’esecuzione.