300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 程序 数列求和 c语言 [编程入门]有规律的数列求和-题解(C语言代码)

程序 数列求和 c语言 [编程入门]有规律的数列求和-题解(C语言代码)

时间:2018-07-28 17:40:12

相关推荐

程序 数列求和 c语言 [编程入门]有规律的数列求和-题解(C语言代码)

第一种:我们发现其实分子和分母都是斐波那契数列(从第三项开始,每一项等于前两项之和),所以我们可以定义两个数组,分别来存放分子和分母。然后两个数组里的数按位置相除累加。

参考代码:

#include

int main ()

{

int N;

double total = 0;

scanf("%d",&N);

int a[N],b[N];

a[0] = 2,a[1] = 3; //这里需要手动输入0 1位置的值

b[0] = 1,b[1] = 2;

for(int i = 2;i < N;i++){ //按规律求出数组里的每个数

a[i] = a[i - 1] + a[i - 2];

b[i] = b[i - 1] + b[i - 2];

}

for(int i = 0;i < N;i++){

total += (double )a[i] / b[i];这里需要强制类型转换或者一开始定义的时候就定义成double

}

printf("%.2lf",total);

return 0;

}

第二种(不太好理解):

我们从题面中可以看到一下规律:从第二项开始,后一项的分子为前一项的分子与分母之和,分母为前一项的分子,所以我们可以从这点入手利用for循环累加。本题的难点则是在于对分子分母变化的控制。

参考代码:

#include

int main()

{

double a = 2.0,b = 1.0,c = 1.0;

double sum = 2.0;

int i,N;

scanf("%d",&N);

for(i = 1;i < N;i++)

{

b = c;

c = a;

a = a + b;

sum += a / c;

}

printf("%.2lf",sum);

return 0;

}

程序解读:

我们定义a为分子,c为分母,b为初始分母,也是中间变量,利于我们计算和理解。

因为sum的值2.0,所以for循环的循环变量也是从1开始的。方便理解循环的内部,我们先把b = c;屏蔽。根据规律,将a的值赋给c作为分母,a+b的值赋给a作为分子,我们就能得到下一项的值,然后累加到sum里面。但是就这样写,我们发现b的值始终为1.0,没有得到更新,只能正确的得到第二项的值。此时我们则要考虑如何对b的值进行正确的更新。

我们知道b的意义本质上也是分母,他决定着下一项分子的值,由a = a + b;这句语句便知,在新的式子a/c中,c为分母,这里也就不难理解为什么会有b =c这句了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。