1.采用递归的方法实现斐波那契数列,速度慢,效率低
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//采用递归的方法实现斐波那契数列
//斐波那契数列:1 1 2 3 5 8 13 21 .....
//特点:F(n)=F(n-1)+F(n-2)
//F(1)=1;
//F(2)=1;
//F(3)=F(2)+F(1);
//F(4)=F(3)+F(2);
int Fib(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
{
return Fib(n - 1) + Fib(n - 2);
}
}
int main()
{
int n;
printf("请输入:");
scanf("%d", &n);
printf("%d\n", Fib(n));
system("pause");
return 0;
}
2.采用非递归的方式实现斐波那契数列 ,高效
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//采用非递归的方法实现斐波那契数列
//斐波那契数列:1 1 2 3 5 8 13 21 .....
//特点:F(n)=F(n-1)+F(n-2)
//F(1)=1;
//F(2)=1;
//F(3)=F(2)+F(1);
//F(4)=F(3)+F(2);
int Fib(int n)
{
int num1 = 1;
int num2 = 1;
int result = 0;
if (n == 1 || n == 2)
{
return 1;
}
else
{
for (int count = 3; count <= n; count++)
{
result = num1 + num2;
num1 = num2;
num2 = result;
}
}
return result;
}
int main()
{
int n;
printf("请输入:");
scanf("%d", &n);
printf("%d\n", Fib(n));
system("pause");
return 0;
}