user-0 提问: 又遇到一个问题：求斐波那契数列前6项和   

回复:
user: user-1
content: 引用 8 楼 u014517899 的回复:嗯嗯 还有想问下  for(int ix=3;ix<=n;++ix)  里面的 ix 什么意思   书上没看到这样的用法   希望帮忙解答下。   ix只是一个变量名，随便起的，没什么意思，5楼的代码是有两个错误，所以把正确的写六楼了。。。

user: user-2
content: 引用 19 楼 u014517899 的回复:谢谢大家了，虽然还有很多看不懂。。。。（18楼的解答对于我现在来说就是天书0.0） 突然发现自己到目前好像什么都没学到  不过还是感谢各位。 看来我还得加倍看书、练习。    不好意思！没环境，没有调试，有两个地方疏忽写错了： Fbl 的第3行为switch(N) Boch的第4行在Ad=0;后漏了break; Fbl主要是产生1、2、3、5、8菲波拉数并保存在数组A里，Boch是产生2/1、3/2、4/3、5/5、6/8，合在一起的已经有了，这里提供一种分开的

user: user-0
content: 谢谢大家了，虽然还有很多看不懂。。。。（18楼的解答对于我现在来说就是天书0.0） 突然发现自己到目前好像什么都没学到  不过还是感谢各位。 看来我还得加倍看书、练习。

user: user-2
content: int *Fbl(unsigned int N,int *A) { 	switch(n){ 		case 0:A=0;break; 		case 2:A[1]=2; 		case 1:A[0]=1;break; 		default: 			A[0]=1;A[1]=2; 			for (unsigned int i=2;i<N;++i) 				A[i]=A[i-1]+A[i-2]; 		} 	return A;	 }  double *Boch(unsigned int N,double *Ad,int *A) { 	switch(N){ 		case 0:	Ad = 0; 		case 2:	Ad[1]=1.5; 		case 1: Ad[0]=2;break; 		default: 			Ad[0]=2;Ad[1]=1.5; 			Fbl(N,A); 			for(unsigned int i=2;i<N;++i) 				Ad[i]=duuble(i+2)/A[i];       //----- 2/1,3/2,4/3,5/5,6/8,7/13.... (n+1)/((n-1)+(n-2)) 		} 	return Ad; } 分子、分母不可能同时为非波拉数，否则函数不可能收敛，即函数将是发散的，没有极限值。 double Sum(unsigned int N,double *A) { 	double s=0; 	for(unsigned int i=0;i<N;++i) 		s+= A[i]; 	return s; }

user: user-0
content: 谢谢1楼的解答。

user: user-0
content: 刚看到数组。。。。。。

user: user-3
content: 这种与前项相关的问题要用递归。

user: user-4
content: 大致思想，供参考  #include <stdio.h> int main(void) { 	int x = 1, y = 2;//初始化数列，x为第一个,y为第二个 	int sum = x + y;//求和 	int n = 6;//n表示前6项 	int i; 	for(i = 3; i <= n; i++) 	{ 		if(i%2 == 1)//更新下一个数据 		{ 			x += y; 			sum += x; 		} 		else 		{ 			y += x; 			sum += y; 		} 	} 	printf("前%d项之和为：%d\n",n,sum); 	return 0; }

user: user-5
content: 引用 16 楼 u014517899 的回复:额。。。。。。  是滴，分子、分母都是Fibonacci数列 不过12楼的解答我看不大懂。。。那里面是不是有函数的调用？（自学的，很多东西似乎都不懂。   ）对，是有函数的调用。跟人建议可以先找一本基础书，把语法好好学一学。 然后多练习。

user: user-0
content: 额。。。。。。  是滴，分子、分母都是Fibonacci数列 不过12楼的解答我看不大懂。。。那里面是不是有函数的调用？（自学的，很多东西似乎都不懂。   ）

user: user-6
content: 这题目也看错了。。。。

user: user-6
content: 额，貌似搞错了方向。。。。

user: user-6
content: #include<stdio.h>  int h(int i) { 	if(i==1||i==2) 		return 1; 	else 		return h(i-1)+h(i-2); } int main(void) { 	int n,i; 	long sum=0; 	printf("请输入项数:"); 	scanf("%d",&n); 		for(i=1;i<=n;i++) 		{ 			sum+=h(i); 			 		} 	printf("前%d项和为%ld\n",n,sum); 	return 0; }  函数的递归。 我也刚学没多久，楼主一起加油吧。

user: user-5
content: /* *  sum = 2/1 + 3/2 + 5/3 + 8/5 + 13/8 + 21/13...... */ #include "stdio.h"  float SumFun(int n) { 	int z = 0, temp = 0; 	int i = 2, j = 1; 	float sum = 0;  	for(z = 0; z < n; z++) 	{ 		sum += (float)i/j; 		temp = i; 		i += j; 		j = temp; 	} 	printf("sum = %f\n", sum); 	return sum; } int main(void) { 	float sum = SumFun(6);  	printf("sum = %f\n", sum); }

user: user-5
content: 引用 10 楼 lovehuan54 的回复:请问题目是不是这个：sum = 2/1 + 3/2 + 5/3 + 8/5 + 13/8...... 分子是斐波那契数列吧？ 补充： 分子和分母都是斐波那契数列？

user: user-5
content: 请问题目是不是这个：sum = 2/1 + 3/2 + 5/3 + 8/5 + 13/8...... 分子是斐波那契数列吧？

user: user-7
content: 简单一点的写法： #include<stdio.h> #define LEN 20 int main() { 	int sum=2; 	int a[LEN]={1,1}; 	int i; 	for(i=2;i<LEN+1;i++) 	{ 		a[i]=a[i-1]+a[i-2]; 		sum=sum+a[i]; 	} 	printf("%d\n",sum); 	getchar(); 	return 0; }

user: user-0
content: 嗯嗯 还有想问下  for(int ix=3;ix<=n;++ix)  里面的 ix 什么意思   书上没看到这样的用法   希望帮忙解答下。

user: user-0
content: 5楼的运行结果不对   中间有两个错误：第8行sum写成sun                                最后return 0后面少分号。   还是谢谢了。 我去研究下这个方法。   没人指点学起来挺恼火的，感觉很多地方不是很懂，想找个人问都找不到。。。。。。

user: user-1
content: 前面的代码有问题：如下，可参考。。。。     1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  	  #include<stdio.h> int main() { int n; printf("请输入一个数字(n>2)：\n");//输入你要求得前n相和的n scanf("%d",&n); int x=1,y=2; int sum=3; for(int ix=3;ix<=n;++ix) { sum+=(x+y);//sum等于前一个sum加第n个数字，而第n个数字为前面的x+y int temp=x;//定义中间变量储存现在的x x=y;//将x的值变成现在的y y=temp+y;//将y的值变成之前的x+y } printf("前n相和为%d\n",sum); return 0; }