再帰的手続き C++プログラミング入門 しおたに・ドット・チャイナ

006.png

HOME > 再帰的手続き

再帰的手続き

再帰的手続き

  #include文
  func();再帰文
  int main(){
    func();再帰文呼出し
  }



n!階乗計算のC++サンプルプログラム


// S(n)=A(n)*S(n-1), S(1)=A(1)
// S(n)=n!, A(n)=n,  S(1)=A(1)=1
#include <iostream>
#include <iomanip>
using namespace std;
 
int sum(int n){
    if(n==1){
        return 1;                //S(1)=A(1)=1
    }
    else{
        return n*sum(n-1);       //S(n)=A(n)*S(n-1)=n*S(n-1)
    }
}
 
int main(void){
 
    for(int n=1; n<=10; n++){
        cout << setw(3) << n << "! = "<< sum(n) << endl;
    }
    
    return 0;
}

コンソール出力結果

  1! = 1
  2! = 2
  3! = 6
  4! = 24
  5! = 120
  6! = 720
  7! = 5040
  8! = 40320
  9! = 362880
 10! = 3628800




等差数列和のC++サンプルプログラム


// S(n)=A(n)+S(n-1), S(1)=A(1)
#include <iostream>
#include <iomanip>
using namespace std;
 
int sum(int n, int *a){
    if(n==1){
        return a[1];                //S(1)=A(1)
    }
    else{
        return a[n]+sum(n-1,a);     //S(n)=A(n)+S(n-1)
    }
}
 
int main(void){
    int a[]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};         //a[0]は数列外数値
 
    cout << sum(10,a) << endl;
    
    return 0;
}

コンソール出力結果

55