分析:
这个题目较易,发现,其它情况下有。如要求实数解的话,这基本已经可以写出递归
函数了。但由于题目要求精确的分数解,还需做一些调整。设,则由递归关系,有,再约
分化简,即得。但发现一个问题:求出时,需要返回两个整数:分子与分母,而通常的函
数只能返回一个整数。
这个问题一般有两类解决办法,一种是让求值函数返回一个结构体变量,这样就可
以返回两个变量了(其实还可以不只两个呢);另一种是在求值函数的参数表中加入两
—
个指针变量或引用变量,通过参数给带回数值。但由于后一种做法会使程序结构不清晰
—返回值是由参数表得到的,因此我们使用前一种方法。
另外,在通过得出后,就已经是最简分数了,无须化简。证明如下:
若是最简分数,即说明的最大公约数为 1,即对任何,都有与不全为 0,不防记、,
则有
只要与不全为 0,且,就有与不全为 0。因此对任何的,有与不全为 0。
而对于的情况而言,记,则有
由于,因此同样有与不全为 0。
所以对任意,都有与不全为 0,因此它们的最大公约数为 1,即是最简分数。虽然这
是个要求(即)是最简分数的结论,但由于数列第二项为,是最简分数,因此可以证明
第三项也是最简分数,同时也证明对所有的,求出的就是最简分数,无须化简。
1
1
=
a
1
1
1
−
+
=
n
n
a
a
p
q
a
n
=
−
1
q
p
p
p
q
a
a
n
n
+
=
+
=
+
=
−
1
1
1
1
1
n
a
1
−
n
aqp
p
q
a
n
=
−
1
q
p
p
a
n
+
=
n
a
p
p, q
r
≤
<
1
r
q mod r
p mod a
r
q
=
mod
b
r
p
=
mod
r
b
a
r
q
p
mod
)
(
mod
)
(
+
=
+
ab
r
b
r
a
<
<
,a
r
b
a
mod
)
(
+
q
r
≤
<
1
r
p mod
r
q
p
mod
)
(
+
p
r
q
≤
<
a
r
p
=
mod
r
q
a
r
q
p
mod
)
(
mod
)
(
+
=
+
r
q
r
a
<
<
<
≤
0
,
0
r
p mod
r
q
p
mod
)
(
+
p
r
≤
<
1
r
p mod
r
q
p
mod
)
(
+
q
p
p
+
1
−
n
a
p
q
2
1
n
a
q
p
p
+
3