指的是这样一个数列:0、1、1、2、3、5、8、13、
就是前两个合是第三个数字
直接上代码--提供两个方法
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
经典题目求斐波那契数列的第n项是什么
的是这样一个数列:0、1、1、2、3、5、8、13、 也就是说钱两项之和等于后一项
int Fibonacci_sequence(int n)
{
if (n == 1)
{
return 1;
}
else if (n == 2)
{
return 1;
}
else
{
return Fibonacci_sequence(n - 1) + Fibonacci_sequence(n - 2);
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fibonacci_sequence(n);
printf("%d", ret);
}
方法2使用循环更加简单 迅速
int Fibonacci_sequence(int n)
{
int f= 1;
int tmp = 0;
int m = 1;
if (n == 1)
{
return 1;
}
else if (n == 2)
{
return 1;
}
else
{
for (int i = 0; i<n-2;i++ )//至于为什么是n-2 自己拿出笔写一下 看从第一个得到第三需要几步 那么我们就循环几次
{
tmp = m + f;
m = f;
f = tmp;
}
return tmp;
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fibonacci_sequence(n);
printf("%d", ret);
}
|