一、结果图
二、源代码
package
sy1;
import
java.util.Scanner;
/**
*
@author
*
*/
public
class
Sy1_1 {
// 找出两数的较小值
static
int
min(
int
a
,
int
b
) {
return
a
<
b
?
a
:
b
;
}
// 找出两数的较大值
static
int
max(
int
a
,
int
b
) {
return
a
>
b
?
a
:
b
;
}
// 递归算法 –由提示可得
gcd
(a,b)=
gcd
(
min
(a,b),max(a,b)%
min
(a,b))
static
int
gcd(
int
a
,
int
b
) {
// 递归的出口
if
(
b
== 0) {
System.
out
.println(
a
);
return
0;
}
else
{
// 递归的规律
return
gcd
(
min
(
a
,
b
),
max
(
a
,
b
) %
min
(
a
,
b
));
}
}
// 非递归算法,for循环
static
int
notgcd(
int
a
,
int
b
) {
for
(;;) {
if
(
b
== 0) {
System.
out
.println(
a
);
return
0;
}
else
{
// 注意运行顺序,前一步是否会对后一步产生影响
int
x
=
min
(
a
,
b
);
int
y
=
max
(
a
,
b
) %
min
(
a
,
b
);
a
=
x
;
b
=
y
;
}
}
}
public
static
void
main(String[]
args
) {
//
TODO
自动生成的方法存根
Scanner
sc
=
new
Scanner(System.
in
);
System.
out
.println(
“输出你想求的两个正整数”
);
int
i
=
sc
.nextInt();
int
j
=
sc
.nextInt();
System.
out
.println(
“递归后最大公约数是;”
);
gcd
(
i
,
j
);
System.
out
.println(
“输出你想求的两个正整数”
);
int
k
=
sc
.nextInt();
int
q
=
sc
.nextInt();
System.
out
.println(
“非递归最大公约数是;”
);
notgcd
(
k
,
q
);
}
}