再帰関数を用いて二つの自然数の最大公約数を
入力が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