剑指offer面试题:两种方法解决斐波那契数列

题目:写一个函数,输入n,求斐波那契数列的第n项。(1,1,2,3,5,8)

思路:斐波那契数列作为数学历史上很经典的存在,让我们用代码快速解出他的第n项。

 

我们的第一种方法是递归,这种方法解斐波那契数列优点就是很容易理解,但是缺点就是数字稍微大一点它花费的时间就特别的长,因为递归中重复计算的部分太多了,数字小可能差别不大,但数字大就体现出来了

#include<stdio.h>
int fib(int m)
{
	if(m==0)
	{
		return 0 ;
	}
	if(m==1||m==2)
	{
		return 1;
	}
	else
	{
		return fib(m-1)+fib(m-2);
	}
}
int main()
{
	int m;
	scanf("%d",&m);
	int n=fib(m);
	printf("%d\n",n);
}

    第二种方法就是我们所熟悉的循环了,用循环解斐波那契数列比递归要来的容易点,消耗也不大。极大程度避免了递归了重复计算,

#include<stdio.h>
int fib(int n)
{
	if(n<=0)
	{
		return 0;
	}
	if(n==1||n==2)
	{
		return 1;
	}
	int a=1;
	int b=1;
	int c;
	for(int i=2;i<n;i++)
	{
		c=a+b;
		a=b;
		b=c;
	}
	return c;
}
int main()
{
	int m;
	scanf("%d",&m);
	int n=fib(m);
	printf("%d\n",n);
}

 

### 如何在 UniApp连接并使用蓝牙扫码枪 #### 连接与初始化过程 为了使应用程序能够识别和处理来自蓝牙条码枪的数据,在应用启动时需调用 `plus.bluetooth` 接口来获取蓝牙管理对象,并开启蓝牙适配器。这一步骤对于确保后续操作顺利至关重要[^1]。 ```javascript // 初始化蓝牙模块 function initBluetooth() { const bluetoothAdapter = plus.bluetooth; // 开启蓝牙适配器 if (!bluetoothAdapter.isEnabled()) { bluetoothAdapter.enable(); } } ``` #### 设备发现与绑定 当蓝牙适配器处于可用状态时,可以开始搜索附近的蓝牙设备。针对HID模式下的条码枪,通常无需复杂配置即可被当作标准外设对待。一旦找到目标设备,则应建立稳定连接。 ```javascript async function startDeviceDiscovery() { try { let devices = await plus.bluetooth.startDiscovery(); for (let device of devices) { console.log(`Found device: ${device.name}`); if (isTargetScanner(device)) { // 自定义函数判断是否为目标扫描枪 connectToDevice(device); break; } } } catch(error) { console.error('Error during discovery:', error); } } function isTargetScanner(deviceInfo) { // 实现逻辑以确认该设备即为所需条码枪 return true; // 假定条件满足 } ``` #### 数据接收与解析 成功建立连接之后,每当触发一次扫描动作,条码数据将以字符串形式发送至已注册监听的应用程序端。此时可通过事件机制捕获这些输入流,并将其转换成可读取的信息片段用于进一步业务流程处理。 ```html <template> <view class="container"> <!-- 输入框 --> <input type="text" v-model="barcodeData"/> </view> </template> <script> export default { data() { return { barcodeData: '' }; }, methods: { handleBarcodeInput(event) { this.barcodeData += event.detail.value; // 可在此处添加额外验证或清理逻辑 } }, mounted() { document.querySelector('input').addEventListener('input', this.handleBarcodeInput); // 清理工作 this.$once('hook:beforeDestroy', () => { document.querySelector('input').removeEventListener('input', this.handleBarcodeInput); }); } }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值