斐波那契数列

/*
斐波那契数列:
1 1 2 3 5 8 13 21 34 55 。。。。。。
方法一:递归
复杂度为:O(2^(N/2))<=T(N)<=O(2^N)
当递归的层数较大时,使用递归算法的时间就会很长。
方法二:非递归
复杂度为:n,但需要开辟空间(代价较小)。
*/
#include<stdio.h>
int Fibonacci_recursive(int level)
{
	if (level <= 2)
	{
		return 1;
	}
	return (Fibonacci_recursive(level - 1) + Fibonacci_recursive(level - 2));
}
int Fibonacci(int level)
{
	int num=1;
	int before1=1, before2=1;
	if (level <= 2)
	{
		num = 1;
	}
	else
	{
		for (int i = 2; i < level; i++)
		{
			num = before1 + before2;
			before2 = before1;
			before1 = num;
		}
	}
	return num;
}
int main()
{
	int level = 0, num = 0;
	printf("请输入时间(level>=0):");
	scanf("%d", &level);
	num = Fibonacci(level);//非递归
	printf("第%d个月一共有%d之兔子(非递归)\n", level, num);
	num = Fibonacci_recursive(level);//递归
	printf("第%d个月一共有%d之兔子(递归)\n",level,num);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值