问题描述:
斐波那契数列:又称黄金分割数列,指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2(n>=2n∈N*)即这个数列从第二项开始,每一项都等于前两项之和。
特别指出:0是第0项,不是第1项。
代码(递归):
# include <stdio.h>
int Fibonacci(int n);
int main(void)
{
int n;
printf("请输入n的值:");
scanf_s("%d", &n);
printf("第%d项的值为:%d\n", n,Fibonacci(n));
return 0;
}
int Fibonacci(int n)
{
if (n < 0)
{
return -1;
}
else if (0 == n)
{
return 0;
}
else if (1 == n)
{
return 1;
}
else
{
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
代码(循环):
# include <stdio.h>
int fib(int n);
int main(void)
{
int n;
printf("请输入n的值:");
scanf_s("%d", &n);
printf("第%d项的值为:%d\n", n,fib(n));
return 0;
}
int fib(int n)
{
int result[2] = {0,1};
if(n < 2)
return result[n];
int fibOne = 0;
int fibTwo = 1;
int fibN = 0;
int i = 0;
for(i = 2; i <= n; i++)
{
fibN = fibOne + fibTwo;
fibOne = fibTwo;
fibTwo = fibN;
}
return fibN;
}