我又又又又tm把问题复杂化了。。好想捶自己T_T!
看到这个数列上的数字就直接想到斐波那契数列了,就想通过这个求解,其实要是没有想到这个数列,用一般的方法写简洁太多。。
不说了,贴代码吧。。下面是我最先用斐波那契数列写的方法。
#include <stdio.h> //用迭代计算斐波那契数 long fabonacci(int n) { long result; long pre_result; long pre_pre_result; result = pre_result = 1; while (n > 2) { n -= 1; pre_pre_result = pre_result; pre_result = result; result = pre_result + pre_pre_result; } return result; } int main() { int N; scanf("%d", &N); double an; double sum = 0.00; double fenzi; double fenmu; int i; for (i = 0; i < N; i++) { fenzi = (double)fabonacci(i + 3); fenmu = (double)fabonacci(i + 2); an = fenzi/fenmu; sum += an; } printf("%.2lf\n", sum); return 0; }
通过了之后我就看了一些其他的解决方法,心里顿时就想骂自己...
好方法如下,参考其他同学的:
由题意可知后一项的分子等于前一项分子加分母,后一项的分母为前一项的分子。
#include <stdio.h> int main() { int N; scanf("%d", &N); double fenzi = 2; double fenmu = 1; double sum = 0.00; double tmp; while(N > 0) { sum = sum + fenzi / fenmu; tmp = fenzi; fenzi = fenmu + fenzi; fenmu = tmp; N--; } printf("%.2lf\n",sum); return 0; }
0.0分
7 人评分