本文目录一览:
- 1、费波纳切数列用C语言怎么编程
- 2、求C语言中斐波那契数列源程序及解释?
- 3、斐波那契数列C语言程序怎么表示
- 4、C语言斐波那契数列求和
- 5、c语言,编程实现,求斐波那契数列,1,1,2,3,5,8,......的前20项及前20项和
费波纳切数列用C语言怎么编程
费波纳切数列,更通用的音译是斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……
数学上的定义是F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
根据数学定义,就可以编写生成该数列的代码,如下:
#include stdio.h
#define RANGE 30
static int fibonacci_values[RANGE];
void make_fibonacci_values(void)
{
int i;
fibonacci_values[0] = 0;
fibonacci_values[1] = 1;//赋值前两项
for(i = 2; i RANGE; i ++)
fibonacci_values[i] = fibonacci_values[i-1] + fibonacci_values[i-2];//按照公式生成剩余项
}
int main()
{
int i;
make_fibonacci_values();//调用生成函数
for(i = 0; i RANGE; i ++)
{
printf("F(%d)=%d\n", i, fibonacci_values[i]);
}
return 0;
}
这个代码的功能是生成斐波那契数列前30项。
用一个数组把每项的值保存下来,然后依次计算。
事实上,只需要知道前两个值,就可以知道下一个值,这样保存两个值就可以计算出第三个值了。于是求斐波那契数列第n项的函数也可以写作:
#include stdio.h
int fibonacci(int n)
{
int i;
int a,b,c;
if(n0) return 0; //这其实是一种出错情况。
if(n == 0) return 0;
if(n == 1) return 1;//处理前两项的情况
a = 0;
b = 1;//对操作数赋初始值
for(i = 2; i = n; i ++)//第一个计算结果其实是F(2),所以i的初始值用2
{
c = a+b;//这时的c即F(i)
a = b;
b = c;
}
return c;
}
int main()
{
int n;
scanf("%d",n);//输入一个n
printf("F(%d) = %d\n", n, fibonacci(n));//输出数列第n项值
return 0;
}
同样,对于这类问题也可以用递归思想,使代码变得更简洁。
#include stdio.h
int fibonacci(int n)
{
if(n == 0) return 0;
if(n == 1) return 1;//处理前两项的情况
return fibonacci(n-1) + fibonacci(n-2);
}
int main()
{
int n;
scanf("%d",n);//输入一个n
printf("F(%d) = %d\n", n, fibonacci(n));//输出数列第n项值
return 0;
}
以上是求斐波那契数列的三种常见的方式。值得注意的一点是,实际使用中要注意使用类型的范围,不要溢出。
比如在这几个程序中使用的是最简单的int类型,最大可以计算到F(46), 而F(47)已经超过了int所能表达的范围,会发生溢出。如果需要更大的值,那么就要改成使用更多字节的类型。比如long long等。
求C语言中斐波那契数列源程序及解释?
斐波那契数列定义:
F0 = 0
F1 = 1
Fn = Fn-1 + Fn-2 (n≥2)
直白的讲,第0项、第一项分别约定为0、1,自第2项开始,每一项等于前两项之和。
#include stdio.h
#define MAX 10 /*费波那契数列项数上限*/
void fibonacci (unsigned __int64 f[], int n) { /*生成n项费波那契数列,n=0为起始*/
int i;
f[0] = 0; /*F0=0*/
f[1] = 1; /*F1=1*/
for (i=2; i=n; i++) /*Fn=Fn-1+Fn-2(n=2)*/
f[i] = f[i-1] + f[i-2];
}
int main(void) {
unsigned __int64 f[MAX];
int i;
fibonacci (f, MAX);
for (i=0; i=MAX; i++)
printf ("F%d = %I64u\n", i, f[i]);
printf("\n");
getch (); /*屏幕暂留*/
return 0;
}
运行结果
斐波那契数列C语言程序怎么表示
#include cstdio
#include iostream
using namespace std;
int main()
{
int n;
cinn;
int a=1,b=1,c;
if(n3)
{
cout1endl;
return 0;
}
n-=2;
while(n--)
{
c=a+b;
a=b;
b=c;
}
coutcendl;
return 0;
}
输入n为第n项,输出斐波那契第n项值
C语言斐波那契数列求和
奇数项求和:a₁+a₃+a₅+a₇+...+a₂ₙ₋₁=a₂ₙ
偶数项求和:a₂+a₄+a₆+a₈+...+a₂ₙ=a₂ₙ₊₁-1
平方求和:a₁+a₂+a₃+a₄+...+aₙ²=aₙ·aₙ₊₁
斐波那契数列中的斐波那契数会经常出现在我们的眼前——比如松果、凤梨、树叶的排列、某些花朵的花瓣数(典型的有向日葵花瓣),蜂巢,蜻蜓翅膀,超越数e(可以推出更多),黄金矩形、黄金分割、等角螺线等。
扩展资料:
斐波那契数列特性
平方与前后项:从第二项开始,每个偶数项的平方都比前后两项之积多1,每个奇数项的平方都比前后两项之积少1。
如:第二项 1 的平方比它的前一项 1 和它的后一项 2 的积 2 少 1,第三项 2 的平方比它的前一项 1 和它的后一项 3 的积 3 多 1。
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
(注:奇数项和偶数项是指项数的奇偶,而并不是指数列的数字本身的奇偶)
参考资料来源:
百度百科-斐波那契数列
c语言,编程实现,求斐波那契数列,1,1,2,3,5,8,......的前20项及前20项和
C语言源程序如下:
#includestdio.h
int main()
{
int array[100]={1,1};//斐波那契数列前两个元素均为0
int i=0;//循环变量
int n=20;//数列需要求的个数
int sum = 0;//和变量
for(i=2;in+1;i++)//按递推原理依次求出后续元素
{
array[i]=array[i-1]+array[i-2];//数列原理
}
printf("arr[1]-arr[%d] = ", n);//提示输出数列元素
for (i = 0; i n; i++)//遍历数列
{
printf("%d ",array[i]);//输出arr[1]-arr[n]元素内容
sum += array[i];//顺便进行求和
}
printf("\n%d ", sum);//输出求和结果
return 0;
}
程序运行结果如下:
扩展资料:
利用递归原理进行求斐波那契数列的求解和求前n项和:
#includestdio.h
int fibonacci(int n) //递归函数
{
if (n == 0 || n == 1)
return 1;
if (n 1)
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main()
{
int i = 0;
for (i = 0; i 30; i++)
{
printf("fibonacci(%d) = %d\n", i, fibonacci(i));
}
return 0;
}