パソコン活用研究シリコンバレー(C、C++、の活用研究)

再帰呼び出しのショートプログラム

(準備中)

------------------------------------summery-----------------------------------------------------
Very short programs using recursive call.
再帰呼び出しを使ったショートプログラムです。
-------------------------------------------------------------------------------------------------


再帰呼び出しを使ったプログラムの説明は再帰呼び出しにもあります。


1 最大公約数を求める

最大公約数を求めるのに、ユークリッド互除法を使います。
ユークリッド互除法については、最大公約数を求める(ユークリッド互除法)をご参照下さい。


再帰呼び出しを使ったプログラム例

#include <stdio.h>

int reciprocal_div(int, int);

int main(void) {
int x,y,gcm;
scanf("%d %d",&x,&y);
gcm=reciprocal_div(x,y);
printf("GCM= %d", gcm);

return 0; }

int reciprocal_div(int x, int y) {
int m,gcm;
m=x % y;
printf("%d %d %d\n",x,y,m);
if (m==0) {gcm= y;}
else gcm=reciprocal_div(y,m);
return gcm; }


再帰呼び出しを使わない場合

#include <stdio.h>

int main(void) {
int x,y,m,gcm;
scanf("%d %d",&x,&y);
m=x % y;
printf("%d %d %d\n",x,y,m);
if (m==0) gcm=y;
while (m !=0) {
x=y; y=m;
m=x % y;
printf("%d %d %d\n",x,y,m);
if (m==0) {gcm=y; break;}
}

printf("GCM= %d", gcm);

return 0; }





TopPage