再帰関数を用いて二つの自然数の最大公約数を
入力が128 72のとき 出力が
128     72
56      72
56      16
40      16
24      16
8       16
8       8
最大公約数=8
となるように求めたいのですが、以下のプログラムだと
128 72と入力すると
128     72
128     56
128     16
128     0
Floating point exception
となってしまいます。再帰関数をどのように変更すれば
128     72
56      72
56      16
40      16
24      16
8       16
8       8
最大公約数=8
と出力されるのかご存じの方よろしくお願い致します。
#include <stdio.h> int d(int m,int n); int main() { int m,n; printf("最大公約数を求める\n"); printf("自然数を二つ入力してください>"); scanf("%d %d",&m, &n); printf("最大公約数=%d\n",d(m,n)); return 0; } int d(int m,int n){ printf("%d\t%d\n",m,n); if(m>n) return d(m, m%n) ; else if(n>m) return d(n,n%m); else return m; }

回答1件
あなたの回答
tips
プレビュー


バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/30 18:48