内容: 已知faibonacai(费波那契)数列的前几个数分别为1,1,2,3,5,8,13,……,编程求此数列的前n(n>=5)

JavaScript015

内容: 已知faibonacai(费波那契)数列的前几个数分别为1,1,2,3,5,8,13,……,编程求此数列的前n(n>=5),第1张

下面是实现的程序,输出的时候用一个变量i进行控制,当已经输出了5个整数倍数个的时候,就换行。

#include <iostream.h>

int main()

{

int f[100], n, i

printf("请输入n:")

scanf("%d", &n)

f[0] = 0f[1] = 1

for(i=2i<=ni++)

f[i] = f[i-1] + f[i-2]

for (i=1i<=ni++)

{

printf("%8d", f[i])

if( i%5 == 0) printf("\n")//如果已经输出了5个整数倍数个,则换行

}

return 0

}

费娜波契数列是一个很有名的数列,下面我将先给出费娜波契数列:

a1=1,

a2=2,

a3=3,

a4=5,

a6=8

an=an-1+am-2

这样一个数列在很多方面都很出名,例如在计算机编程中斐波那契数列的兔子问题

还有在数学系中高等代数的线性递归关系问题,先说说兔子问题:

兔子问题是这样的:

有一对兔子,从出生后第三个月起每个月都生一对兔子。小兔子长到第三个月后每个

月又生一对兔子。假设所有的兔子都不死,问每个月的兔子总对数为多少?

在c++编程中的循环语句中大多数的教材都有对它地介绍,在此不做进一步说明。

另外一个是在高等数学中的解法:

an=an-1+an-2

所以其特征多项式为:

f(x)=x2-x-1

得其两根:

x1=(1+√5)/2

x2=(1-√5)/2

设an=d1*(x1的n次方)+d2*(x2的n次方)且

d1+d2=1

d1*x1+d2*x2=1

解方程即可。

你程序的输出不可能是你给的结果

输出在第二个for循环里的,而第二个for循环是在 i 能被5整除的时候才输出

两个for 循环很好理解

第一个 for 循环计算数列每一项

第二个 for 循环是打印数列项

两个循环彼此没有联系