再帰的手続き
再帰的手続き
#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