1.递归思想(执行效率低,做题时很可能超时)
#include <stdio.h>
int fib(int n)
{
if (n == 1 || n == 2)
return 1;
else
return fib(n - 1) + fib(n - 2);
}
int main() {
int i = 0;
scanf("%d", &i);
int z=fib(i);
printf("%d", z);
return 0;
}
2.迭代思想
#include <stdio.h>
long long fib(int n)
{
long long a = 1;
long long b = 1;
long long c = 1;
while (n >= 3)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
int main() {
int n = 0;
scanf("%d", &n);
long long i = fib(n);
printf("%ld", i);
return 0;
}
3.数组(大佬提供)
#include<stdio.h>
long long Fib(int n)
{
int i;
long long arr[100] = {0,1,1};
for (i = 2; i <= n; i++)//从第一项开始
{
arr[i] = arr[i - 1] + arr[i - 2];
}
return arr[n];
}
int main()
{
int n;
scanf("%d", &n);
printf("%ld", Fib(n));
return 0;
}