7.斐波那契数列

博客围绕求解斐波那契数列第n项展开,要求输入整数n(n<=39)输出对应项。介绍了两种算法,递归算法存在重复计算和调用栈溢出问题,动态规划算法自下而上计算,时间复杂度为O(n),还提及一种更厉害但未弄明白的动态规划算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。

n<=39

 

有两种算法

递归:

递归中有很多重复的地方,从而对性能带来很大的负担

递归可能引起更大的问题:调用栈溢出

 

动态规划:

自下而上计算,时间复杂度大O(n)

 

代码:

 int Fibonacci(int n) 
    {
        if (n > 39 || n == 0)
	{
		return 0;
	}
	int firstNum = 0;//f(n-2)
	int secondNum = 1;//f(n-1)
	int finalNum = 0;
	int i = 0;
	while (i <= n)
	{
		if (i == 0)
		{
			finalNum = 0;
			i++;
			continue;
		}
		else if (i == 1)
		{
			finalNum = 1;
			i++;
			continue;
		}
		secondNum = firstNum;
		firstNum = finalNum;
        finalNum = firstNum + secondNum;
		i++;
	}
	return finalNum;
    }

还有一个更厉害算法,也是动态规划,但是没太弄明白

int Fibonacci(int n) {
        int f = 0, g = 1;
        while(n--) {
            g += f;
            f = g - f;
        }
        return f;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值