斐波那契数列是一组第一位和第二位为1,从第三位开始,后一位是前两位和的一组递增数列,像这样的:1、1、2、3、5、8、13、21、34、55......
1、递归法:
int Fibonacci(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else//Fibonacci(n)=Fibonacci(n-1)+Fibonacci(n-2);
{
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
2、非递归
int My_fib(int x)
{
int n1 = 0, n2 = 1;
if (x <0)
{
return 0;
}
if (x == 1||x == 2)
{
return 1;
}
else if(x>=3)
{
for (int i = 1;i <x;i++)
{
n2 = n1 + n2;
n1 = n2 - n1;
}
return n2;
}
}
3、完整代码
#include<stdio.h>
int My_fib(int x)
{
int n1 = 0, n2 = 1,sum = 0;
if (x <0)
{
return 0;
}
if (x == 1||x == 2)
{
return 1;
}
else if(x>=3)
{
for (int i = 1;i <x;i++)
{
n2 = n1 + n2;
n1 = n2 - n1;
}
return n2;
}
}
int fib(int x)
{
if (x == 1 || x == 2)
{
return 1;
}
return fib(x - 1) + fib(x - 2);
}
int main()
{
int x = 0;
scanf("%d", &x);
printf("非递归:%d\n", My_fib(x));
printf(" 递归:%d\n",fib(x));
return 0;
}