Assalamu'alaikum...
 
  
 
 
  
 
 
  
 
 
  
 
 
  
   
    
     
      
    
   
  
 
 
  
 
 
  
 
 
  
   
    
     
    
    
    
    
    
  
 
 
  
 
 
  
 
 
  
   
 
 
  
   
 
  
 
 
  
 
 
  
 
 
  
 
 
  
 
 
  
 
  
 
 
  
 
  
 
 
  
 
  
 
 
  
 
  
 
 
  
 
 
  
 
 
  
 
 
  
 
 
  
 
 
  
   
  
  
 
  
   
  
  
 
  
   
  
  
 
  
   
  
  
 
  
 
 
  
 
 
  Bismillah, setelah mempelajari mengenai rekursif dan contoh
  kali ini akan melanjutkan mengenai contoh program faktorial secara rekursif.
 
 
  
   Faktorial (!)
  
  dari bilangan asli x adalah hasil perkalian antara bilangan bulat positif yang kurang dari atau sama dengan x.
 
 
  contoh :
 
 
  1! = 1*1 = 1
 
 
  2! = 1*2 = 2
 
 
  3! = 1*2*3 = 6
 
 
  4! = 1*2*3*4 = 24
 
 
  5! = 1*2*3*4*5 = 120
 
 
  6! = 1*2*3*4*5*6 = 720
 
 
  dst...
 
 
  Jika menggunakan perulangan biasa, dapat dilihat programnya seperti ini :
 
 
     
      #include
     
     
      <iostream>
     
    
    
     
      using
     
     
      namespace
     
     
      std
     
     ;
    
    
       
        void
       
       
        faktorialPerulangan
       
       (
       
        int
       
       
        bil
       
       ){
      
      
       
        int
       
       hasil=
       
        1
       
       ;
      
      
       
        for
       
       (
       
        int
       
       i =
       
        1
       
       ; i <= bil; i++)
      
      
       {
      
      
       hasil *= i;
      
      
       cout<<i;
      
      
       
        if
       
       (i != bil)
      
      
       {
      
      
       cout<<
       
        '*'
       
       ;
      
      
       }
      
      
       }
      
      
       cout<<
       
        '='
       
       <<hasil;
      
      
       }
      
      
       
        int
       
       
        main
       
       (){
      
      
       
        int
       
       bil,hasil=
       
        1
       
       ;
      
      
       cout<<
       
        "Faktorial dengan perulangan for"
       
      
      
       
       
       
       
       <<endl;
      
      
       cout<<
       
        "Masukan bilangan : "
       
       ;cin>>bil;
      
      
       cout<<bil<<
       
        "! = "
       
       ;
      
      
       
        
        
        faktorialPerulangan
       
       (bil);
      
      
       }
      
     
  bandingkan dengan menggunakan rekursif berikut ini :
 
 
     
      #include
     
     
      <iostream>
     
    
    
     
      using
     
     
      namespace
     
     
      std
     
     ;
    
    
     
      int
     
     
      faktorial
     
     (
     
      int
     
     
      bil
     
     ,
     
      int
     
     
      hasil
     
     ){
    
    
     
      if
     
     (bil ==
     
      0
     
     ){
    
    
     
     
     //pemberhentian rekursif
    
    
     cout<<
     
      '='
     
     ;
    
    
     
      return
     
     hasil;
    
    
     }
    
    
     
      else
     
     {
    
    
     hasil*=bil;
    
    
     cout<<bil;
    
    
     
      if
     
     (bil !=
     
      1
     
     )
    
    
     cout<<
     
      '*'
     
     ;
    
    
     
     
     
     
     //melakukan rekursif
    
    
     
      faktorial
     
     (bil-
     
      1
     
     ,hasil);
    
    
     }
    
    
     }
    
    
     
      int
     
     
      main
     
     (){
    
    
     
      int
     
     bil,hasil=
     
      1
     
     ;
    
    
     cout<<
     
      "Faktorial dengan rekursif"
     
     <<endl;
    
    
     cout<<
     
      "Masukan bilangan : "
     
     ;cin>>bil;
    
    
     cout<<bil<<
     
      "! = "
     
     ;
    
    
     
     
     cout<<
     
      faktorial
     
     (bil,hasil);
    
    
     }
    
   
  Hasil output kedua program diatas :
 
 
      
     | 
   
| Faktorial menggunakan perulangan for | 
      
     | 
   
| 
     Faktorial menggunakan fungsi rekursif
      | 
   
  Kedua program menghasilkan nilai faktorial yang sama, namun susunan bilangannya yang berbeda. Untuk program pertama hanya menggunakan perulanga for (loop for) seperti biasa, sedangkan program kedua menggunakan fungsi rekursif. Parameter yang dilempar kepada kedua fungsi pun berbeda.
 
 
  Berikut alur program faktorial menggunakan for :
 
 
  bil= 5
 
 
  //
  
   cout<<bil<<
  
  
   "! = "
  
  
   ;
  
 
 
  5! =
 
 
  //
  
   faktorialPerulangan
  
  
   (bil);
  
 
 
  faktorialPerulangan(5)
 
 
  hasil = 1
 
 
  iterasi 1 : i= 1
 
 
  hasil = hasil * i = 1*1 =1
 
 
  //
  
   cout<<i;
  
 
 
  5! = 1
 
 
  //
  
   if
  
  
   (i != bil) cout<<'*';
  
 
 
  5! = 1*
 
 
   iterasi 2 : i= 2
  
  
   hasil = hasil * i = 1*2 =2
  
  
   //
   
    cout<<i;
   
  
  
   5! = 1*2
  
  
   //
   
    if
   
   
    (i != bil) cout<<'*';
   
  
  
   5! = 1*2*
  
 
   iterasi 3 : i= 3
  
  
   hasil = hasil * i = 2*3 =6
  
  
   //
   
    cout<<i;
   
  
  
   5! = 1*2*3
  
  
   //
   
    if
   
   
    (i != bil) cout<<'*';
   
  
  
   5! = 1*2*3*
  
 
   iterasi 4 : i= 4
  
  
   hasil = hasil * i = 6*4 =24
  
  
   //
   
    cout<<i;
   
  
  
   5! = 1*2*3*4
  
  
   //
   
    if
   
   
    (i != bil) cout<<'*';
   
  
  
   5! = 1*2*3*4*
  
 
   iterasi 5 : i= 5
  
  
   hasil = hasil * i = 24*5 =120
  
  
   //
   
    cout<<i;
   
  
  
   5! = 1*2*3*4*5
  
  
   //
   
    if
   
   
    (i != bil) cout<<'*';
   
  
  
   // i sudah sma dengan bil
  
  
   5! = 1**2*3*4*5
  
 
  iterasi selesai
 
 
  //
  
   cout<<
  
  
   '='
  
  
   <<hasil;
  
 
 
  5! = 1**2*3*4*5 = 120
 
 
  Berikut alur program faktorial menggunakan rekursif :
 
 
  bil = 5;
 
 
  hasil =1;
 
 
  //output
  
   cout<<bil<<
  
  
   "! = "
  
  
   ;
  
 
 
  5! =
 
 
  //
  
   cout<<
  
  
   faktorial
  
  
   (bil,hasil);
  
 
 
  faktorial(5,1)
 
 
  menjalankan
  
   else
  
 
 
  hasil = 1*5 = 5
 
 
  //output
  
   cout<<bil;
  
 
 
  5! = 5
 
 
  //
  
   if
  
  
   (bil !=
  
  
   1)
  
  
   cout<<
  
  
   '*'
  
  
   ;
  
 
 
  5! = 5*
 
 
  //
  
  
  
   faktorial
  
  
   (bil-
  
  
   1
  
  
   ,hasil);
  
 
 
  faktorial (4,5)
 
 
   menjalankan
   
    else
   
  
  
   hasil = 5*4 = 20
  
  
   //
   
    cout<<bil;
   
  
  
   5! = 5*4
  
  
   //
   
    if
   
   
    (bil !=
   
   
    1)
   
   
    cout<<
   
   
    '*'
   
   
    ;
   
  
  
   5! = 5*4*
  
  
   //
   
   
   
    faktorial
   
   
    (bil-
   
   
    1
   
   
    ,hasil);
   
  
  
   faktorial (3,20)
  
 
   menjalankan
   
    else
   
  
  
   hasil = 20*3 = 60
  
  
   //
   
    cout<<bil;
   
  
  
   5! = 5*4*3
  
  
   //
   
    if
   
   
    (bil !=
   
   
    1)
   
   
    cout<<
   
   
    '*'
   
   
    ;
   
  
  
   5! = 5*4*3*
  
  
   //
   
   
   
    faktorial
   
   
    (bil-
   
   
    1
   
   
    ,hasil);
   
  
  
   faktorial (2,60)
  
 
   menjalankan
   
    else
   
  
  
   hasil = 60*2 = 120
  
  
   //
   
    cout<<bil;
   
  
  
   5! = 5*4*3*2
  
  
   //
   
    if
   
   
    (bil !=
   
   
    1)
   
   
    cout<<
   
   
    '*'
   
   
    ;
   
  
  
   5! = 5*4*3*2*
  
  
   //
   
   
   
    faktorial
   
   
    (bil-
   
   
    1
   
   
    ,hasil);
   
  
  
   faktorial (1,120)
  
 
   menjalankan
   
    else
   
  
  
   hasil = 120*1 = 120
  
  
   //
   
    cout<<bil;
   
  
  
   5! = 5*4*3*2*1
  
  
   //
   
    if
   
   
    (bil !=
   
   
    1)
   
   
    cout<<
   
   
    '*'
   
   
    ;
   
  
  
   5! = 5*4*3*2*1
  
  
   //
   
   
   
    faktorial
   
   
    (bil-
   
   
    1
   
   
    ,hasil);
   
  
  
   faktorial (0,120)
  
 
  menjalankan
  
   if
  
 
 
  
   //
  
  
   cout<<
  
  
   '='
  
  
   ;
  
 
 
  5! = 5*4*3*2*1=
 
 
  //
  
   return
  
  
   hasil;
  
 
 
  5! = 5*4*3*2*1=120
 
 
  Nah begitulah kira2 kurang lebih alur dari kedua program faktorial diatas.
 
 
  Bagaimana sudah paham ?
 
 
  Semoga bermanfaat. Terimakasih