斐波那契数列
Posted 爱吃榴莲的喵星人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了斐波那契数列相关的知识,希望对你有一定的参考价值。
文章目录
1.基本介绍
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368
提示:这个数列从第3项开始,每一项都等于前两项之和。
2.递归实现
#include<stdio.h>
int Fib(int n)
if (n <= 2)
return 1;
else
return Fib(n - 1) + Fib(n - 2);
int main()
int n = 0;
scanf("%d", &n);
int ret = Fib(n);
printf("%d\\n", ret);
return 0;
运行结果
时间复杂度:O(2^n)
空间复杂度:O(n)
提示:空间可以重复利用,不累计的;时间是一去不复返,累计的
3.非递归实现
迭代实现
提示:时间复杂度:O(n) ; 空间复杂度O(1)
#include<stdio.h>
int Fib(int n)
int a = 1;
int b = 1;
int c = 1;
while (n > 2)
c = a + b;
a = b;
b = c;
n--;
return c;
int main()
int n = 0;
scanf("%d", &n);
int ret = Fib(n);
printf("%d\\n", ret);
return 0;
运行结果
数组实现
提示:时间复杂度:O(n) ; 空间复杂度O(n)
#include<stdio.h>
#include<stdlib.h>
long long Fibonacci(unsigned int n)
if (n == 0)
return 0;
long long ret=0;
long long* fibArray = (long long*)malloc((n + 1) * sizeof(long long));
if (fibArray == NULL)
printf("空间开辟失败");
else
fibArray[1] = 1;
fibArray[2] = 1;
for (long long i = 3; i <= n; i++)
fibArray[i] = fibArray[i - 1] + fibArray[i - 2];
ret = fibArray[n];
free(fibArray);
fibArray = NULL;
return ret;
int main()
unsigned int n = 0;
scanf("%d", &n);
long long ret = Fibonacci(n);
printf("%lld\\n", ret);
return 0;
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系以上是本篇文章的全部内容,如果文章有错误或者有看不懂的地方,多和喵博主交流。互相学习互相进步。如果这篇文章对你有帮助,可以给喵博主一个关注,你们的支持是我最大的动力。
以上是关于斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章
c语言中,。编写程序求斐波那契数列的第n项和前n项之和。大家看好是【第】n项的值和前n项的合= =。
自定义一个函数sumfib(n),返回斐波那契数列前n项之和 python?