网站建设资讯

NEWS

网站建设资讯

c语言函数头斐波那契数列 求斐波那契数列c语言

费波纳切数列用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语言进阶:求斐波那契数列

工具/材料

visual studio

01

求斐波那契数列有两种思路:循环与递归。我们首先来看循环的方式。为了与实际下标对应,我设置数组第一项为0。

02

对索引i的值进行判断:i==1,则令a[i]=1。否则a[i]=a[i-1]+a[i-2];

03

然后再添加一个打印函数,只需要打印第1-n项即可。

04

编写测试函数,用n=5与n=10测试,代码与结果如下:

05

在这里,我写出求第n项的函数,接下来只需要添加一个外函数就可以求出。

06

接下来,测试n=5与n=10,即依次调用递归函数计算每一个值。

07

运行的结果如下,与之前的循环一致。

求用C语言表达斐波那契数列

#include stdio.h

main( ){

long f1,f2,f;

int i,n;

scanf("%d",n);

f1=f2=1;

if(n=2)

f=1;

else

for(i=3;i=n;i++){

f=f1+f2;

f1=f2;

f2=f;

}

printf("%ld\n",f);

}

波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:

F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

C语言:利用函数递归求斐波那契数列,输出该数列的前17项,每行输出5个数。

#include

#define

COL

5

//一行输出5个

long

fibonacci(int

n)

{

//fibonacci函数的递归函数

if

(0==n||1==n)

{

//fibonacci函数递归的出口

return

1;

}

else

{

return

fibonacci(n-1)+fibonacci(n-2);

//反复递归自身函数直到碰到出口处再返回就能计算出第n项的值

}

}

int

main(void)

{

int

i,n;

n=

17;

printf("Fibonacci数列的前%d项\n",

n);

for

(i=0;

i

{

printf("%-10ld",fibonacci(i++));

//调用递归函数并且打印出返回值

if(i%COL==0)

{

//若对COL取余等于0就换行,也就是控制每行输出多少个,

//而COL=10就是每行输出10个

printf("\n");

}

}

printf("\n");

return

0;

}


网站名称:c语言函数头斐波那契数列 求斐波那契数列c语言
转载源于:http://njwzjz.com/article/hpgpjd.html