斐波那契数
斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数就是由前面的两数相加。
非递归实现求第n个斐波那契数。
#include<stdio.h>
int main()
{
int *a;
int i,n;
printf("请输入n值:");
scanf_s("%d", &n);
a = (int*)malloc(n * (sizeof(int)));//申请动态数组内存
a[0] = 1;
a[1] = 1;
if (n == 1 || n == 2)
{
printf("第%d个斐波那契数是1",n);
}
for (i = 2; i < n; i++)
{
a[i] = a[i - 1] + a[i - 2];
if (i == n-1)
{
printf("第%d个斐波那契数是%d\n", n, a[i]);
}
}
return 0;
}
递归实现求第n个斐波那契数。
#include<stdio.h>
int Fibonacci(int n);
int main()
{
int n;
printf("输入n值:");
scanf_s("%d", &n);
printf("%d\n", Fibonacci(n));
return 0;
}
int Fibonacci(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
if (n > 2)
{
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
运行后和非递归一致…