主题:求一分数序列。
soulcontrol
[专家分:0] 发布于 2005-12-04 10:11:00
求一分数序列:
2/1,3/2,5/3,13/8,21/13????????
求出这个数列前20项之和。
回复列表 (共7个回复)
沙发
千古一朋 [专家分:10] 发布于 2005-12-04 14:52:00
#include "stdio.h"
main()
{
float s=0,f1=2,f2=1,f=1,t,n;
for(n=1;n<=20;n++)
{
s=s+f*f2/f1;
t=f2;
f1=f2
f2=f1=t;
}
printf("s=%f\n",s);
}
板凳
moz [专家分:37620] 发布于 2005-12-04 20:02:00
a=1
b=2
for i=1 to 20
s=s+b/a
c=a+b
a=b
b=c
next
print s
可惜得到的不是分数形式,
需要分数形式的请把分母通分。
3 楼
moz [专家分:37620] 发布于 2005-12-04 20:41:00
defdbl a-z
a=1
b=2
s2=1
for i=1 to 20
s2=s2*a
c=a+b
a=b
b=c
next
a=1
b=2
for i=1 to 20
s1=s1+b*s2/a
c=a+b
a=b
b=c
next
print s1;"/";s2
实际应用中,分母的公倍数太大,无法约分运算了。
4 楼
星月神ming [专家分:180] 发布于 2007-01-20 22:19:00
2/1,3/2,5/3,13/8,21/13????????
a=2
b=1
?a/b
for i=1 to 19
t=a
a=a+b
b=t
?a/b
next i
5 楼
强强 [专家分:4740] 发布于 2007-01-25 22:48:00
DECLARE SUB yuefen ()
COMMON SHARED sumfenzi AS DOUBLE, sumfenmu AS DOUBLE
CLS
DIM fenzi(1 TO 20) AS DOUBLE, fenmu(1 TO 20) AS DOUBLE
fenzi(1) = 2: fenmu(1) = 1
FOR i = 2 TO 20
fenzi(i) = fenmu(i - 1) + fenzi(i - 1)
fenmu(i) = fenzi(i - 1)
NEXT i
FOR i = 1 TO 20
PRINT fenzi(i); "/"; fenmu(i),
NEXT i
PRINT : PRINT : PRINT
FOR i = 2 TO 9
sumfenmu = fenmu(i) * fenmu(i - 1)
sumfenzi = fenzi(i) * fenmu(i - 1) + fenzi(i - 1) * fenmu(i)
CALL yuefen
fenzi(i) = sumfenzi
fenmu(i) = sumfenmu
PRINT sumfenzi; "/"; sumfenmu
NEXT i
SUB yuefen
IF sumfenzi MOD 2 = 0 AND sumfenmu MOD 2 = 0 THEN
sumfenzi = sumfenzi / 2: sumfenmu = sumfenmu / 2
ELSEIF sumfenzi MOD 3 = 0 AND sumfenmu MOD 3 = 0 THEN
sumfenzi = sumfenzi / 3: sumfenmu = sumfenmu / 3
ELSEIF sumfenzi MOD 5 = 0 AND sumfenmu MOD 5 = 0 THEN
sumfenzi = sumfenzi / 5: sumfenmu = sumfenmu / 5
ELSEIF sumfenzi MOD 7 = 0 AND sumfenmu MOD 7 = 0 THEN
sumfenzi = sumfenzi / 7: sumfenmu = sumfenmu / 7
END IF
END SUB
分数20项能找出来,但是和太大了,只能加前九项,最后一个和怎么没约分呢?请MOZ指正。大家也别笑话俺啊
6 楼
moz [专家分:37620] 发布于 2007-01-26 13:32:00
要把你子程序中的 elseif 改成两行
endif
if
7 楼
强强 [专家分:4740] 发布于 2007-01-26 17:47:00
3Q
我来回复