【王道】每日数据结构 2022.7.5

目录

第一章p11 的思维扩展题

递归

非递归


第一章p11 的思维扩展题

递归

#include<stdio.h>

int Fbnq(int n){
	if(n==1 || n==0){                   //判断n=0或者n=1的情况
		return 1;
	}else{
		return Fbnq(n-1)+Fbnq(n-2);     //根据斐波那契公式进行调用
	}
}
int main(){
	int n;
	scanf("%d",&n);                      //输入自己想要求得第几项
	int result;
	result=Fbnq(n);
	printf("%d",result);
	return 0;
}

时间复杂度

O(n^2)

 斐波那契数的时间复杂度、空间复杂度详解_lxf_style的博客-CSDN博客_斐波那契数列时间复杂度斐波那契数:斐波那契数列指的是1、1、2、3、5、8、13、21、······这样一个数列,我们可以发现它后面的一个数是前两个数之和。而在这个数列中的数就被称为斐波那契数。时间复杂度:时间复杂度实际就是一个函数,该函数计算的是执行基本操作的次数。时间复杂度的O渐进表示:算法语句总的执行次数是关于问题规模N的某个函数,记为f(N),N称为问题的规模。语句总的执行次数记为T(N),当N不断变化时,...https://blog.csdn.net/lxf_style/article/details/80458519

非递归

#include<stdio.h>

int main(){
	int n;
	int result;
	scanf("%d",&n);                       //输入自己想要求得第几项
	if(n==0 || n==1){				    //判断n=0或者n=1的情况
		return printf("1");
	}else{                                //非递归主要是通过n-2次循环,来模拟本项和等于前两项和(从第三项开始),通过swap
		int a=1;                          //来交换前两项和来实现
		int b=1;
		int tmp=0;
		for(int i = 3;i<=n;i++){
			tmp=b;
			b=a+b;
			a=tmp;
		}
		result = a+b;
		return printf("%d",result);
	}
	
}

 

 

时间复杂度:

O(n)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值