スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

再帰(1)

再帰とは、ある関数の中で、自分自身を呼び出すこと。繰り返し行われる処理を簡潔に記述する際に
威力を発揮する。
例えば、最大公約数を求める場面。最大公約数とは、数A,B,Cがあったとき、それらをすべて割り切ることができる最大の数の事である。例えば、2数を与えたとき、最大公約数を返すプログラムは以下の通り。

#include

int gcd(int num1, int num2){
int idx;
for(idx=num1;idx>0;idx--){
if(num1%idx==0 && num2%idx==0)
break;
}
return idx;
}


int main(void){
int num1, num2;
int answer;

puts("input data1");
scanf("%d", &num1);
puts("input data2");
scanf("%d", &num2);
answer = gcd(num1,num2);
printf("the greatest common divisor of %d, %d is %d\n", num1, num2,answer);
return 0;
}




3つ以上の数の最大公約数を求めるときには、以下の通り再帰を用いて繰り返す。

#include <stdio.h>

int array[] = {15,45,125,35};

int gcd(int num1, int num2){
int idx;
for(idx=num1;idx>0;idx--){
if(num1%idx==0 && num2%idx==0)
break;
}
return idx;
}
int multi_gcd(int n){
if(n == 2)
return gcd(array[0], array[1]);
else
return gcd(array[n], multi_gcd(n-1));
}


int main(void){

int arrayNum = sizeof(array)/ sizeof(array[0]);
printf("the greatest common divisor is %d\n", multi_gcd(arrayNum-1));
return 0;

}
スポンサーサイト
プロフィール

tjnet777

Author:tjnet777
Solaris, VPNのサポート業務を1年

金融系SIerで業務アプリの開発、メンテを3年半

離職して大学院大学 1年生

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。