斐波那契数列

P73 斐波那契数列

题目:写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列的定义如下:

递归实现:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int fib(int n)
{
if (n ==0|| n ==1)
{
return n;
}
else
{
return fib(n - 1) + fib(n - 2);
}
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d\n",fib(n));
system("pause");
return 0;
}


结果:

4

3

请按任意键继续. . .

 

优化解法:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
long long fib(unsigned n)
{
int result[2] = { 0, 1 };
if (n < 2)
{
return result[n];
}
long long fibNMINusOne = 1;
long long fibNMINusTwo = 0;
long long fibN = 0;
for (unsigned int i = 2; i <= n; ++i)
{
fibN = fibNMINusOne + fibNMINusTwo;
fibNMINusTwo = fibNMINusOne;
fibNMINusOne = fibN;
}
return fibN;
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d\n",fib(n));
system("pause");
return 0;
}



你可能感兴趣的:(斐波那契,数列)