一列数的规则如下: 1、1、2、3、5、8、13、21、34…… 求第30位数是多少, 用递归算法实现

【PHP面试题】(斐波那契数列)1,1,2,3,5,8,13,21,34......求第30位的数是多少,请用伪代码描述其实现方法。 文章目录一、考点逻辑思维能力二、解题方法找要处理的数组或者字符串的规律,也可能是一个数列的规律,如果要求使用伪代码实现,建议先说明规律,然后白话说明解题步骤即可。三、真题1、1,1,2,3,5,8,13,21,34......求第30位的数是多少,请用伪代码描述其实现方法。注:该题不需要用具体的代码实现,只需要用 伪代码把思路描述出来即可。2、请写一个函数,实现以下功能:字符串 "open_doo... 阅读详情

前言

       首先声明,这道题解法来自博客:https://blog.youkuaiyun.com/qq_16633405/article/details/79211002

       不过原文没有给出解释,想了很久才想出来

 

解题思路

这是ACM中比较常见的一类题,本身找规律是不难的,无非就是前两个个数相加等于后一个数,按照常规的解法是很容易的,例如

 

java源码

public class Test {  

    public static void main(String[] args) {  
        System.out.println("结果是:"+Test.foo(30));  
    }  

    /** 
     * 常见解法 
     */  
    public static int foo(int i){  
    	int a=1,b=1;
    	int c=0;
    	for(int k=2;k<i;k++){//注意循环次数
    		c=a+b;
    		a=b;//注意这句要放在b=c之前
    		b=c;		
    	}
    return c;	
   }  
    
}

 

很明显,这样很容易我们就能得到答案,不过写代码的时候要注意细节问题,不然容易出差错,这样虽然容易 但是,并不是我们要的递归求解。

 

上面是正向的解法,而递归巧妙之处在于它的逆向求解过程,解题过程如下。

java源码

public class Test {  

    public static void main(String[] args) {  
        System.out.println("结果是:"+Test.foo(30));  
    }  

    /** 
     * 递归算法实现 
     */  
    public static int foo(int i){  
        if(i<=0)  
            return 0;  
        else if(i>0 && i<=2)  
            return 1;  
        return foo(i-1) + foo(i-2);  
    }  
}

 

分析

这样求解其实是需要算法的一定积累的,不然也并不容易想到

现在举例来看递归体现在哪了

我们用递归模拟求解第6个数字过程如下

i=6

Foo(6)

等于

foo(5)+foo(4)

等于

foo(4)+foo(3)+foo(3)foo(2)

等于

foo(3)+foo(2)+……..

很明显fOO(2)与foo(1)在程序中已经声明了结果,同理就算是第30个数字,利用递归不断化解,也就能解出来了

反无人机技术实战解析:从探测到拦截的全方位防御策略 本文深入解析了反无人机(C-UAS)技术的全链条防御策略。从雷达、无线电频谱、光电等多维度探测技术,到数据融合与威胁评估,再到无线电干扰、导航诱骗及物理拦截等核心拦截手段,系统阐述了如何构建从探测到拦截的实战化防御体系,为关键设施、大型活动等场景提供定制化空域安全解决方案。 阅读详情

相关推荐

DSP复习笔记(5)——外部接口模块XINTF

【注意】 1. 芯片型号:TMS320F28335 2. 适用于NJUSTEO李彧晟老师课程 3. 参考资料:《TMS320F28335 DSP原理、开发及应用》 4. 对应PPT第二章 5. 本章内容较多而且较为重要,请结合PPT一起复习

BerenCamlost的博客 1万+

一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现

class Program { static void Main(string[] args) { Console.WriteLine(Foot(3)); Console.ReadKey(); } public static int Foot...

qq_40098572的博客 9658

告别手动改Hex!用Vector HexView命令行5分钟搞定固件数据“乾坤大挪移”

本文详细介绍了如何利用Vector HexView命令行工具快速实现嵌入式固件数据的自动化迁移,告别手动修改Hex文件的繁琐流程。通过实战案例和脚本示例,展示了如何5分钟内完成数据地址范围的重新映射,提升嵌入式开发效率,特别适用于烧录文件的内存布局调整。

weixin_30635053的博客 711

一列数字的规则如下;1,1,2,3,5,8,13,21,34........ 求第30位数字是多少,用递规和非递归两种方法算法实现

斐波纳契数列(Fibonacci Sequence),又称黄金分割数列。在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*) 把一条线段分割为两部分,使较大部分与全长的比值等于较小部分与较大的比值,则这个比值即为黄金分割。其比值是(√5-1):2,近似值为0.618,通常用希腊字母Ф表示这个值。 附:黄金分割数前面的32位...

ah_hzy的博客 3040

FPGA之道(22)VHDL基本程序框架

在介绍详细的VHDL语法之前,让我们先来了解一下VHDL代码的基本程序框架,这样可以让我们先对VHDL程序设计有一个整体的概念把握,进而在后续的VHDL语法学习中做到有的放矢。

Reborn Lee 8309

磁编码器选型避坑指南:为什么MT6816比霍尔传感器更适合你的伺服系统?

本文深入对比了MT6816磁编码器与传统霍尔传感器在伺服系统中的应用。MT6816基于AMR技术,对磁场方向敏感而非强度,具备高精度、强抗干扰、高安装容差和极低延时等优势,尤其适合高转速、恶劣环境下的工业场景,能有效提升系统可靠性与长期稳定性。

rainy的博客 1104

一列数的规则如下:1、1、2、3、5、8、13、21、34…… 求第30位数是多少,用递归算法实现。

一列数的规则如下:1、1、2、3、5、8、13、21、34…… 求第30位数是多少,用递归算法实现。 public class Test { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入第n个数字:");

lidaheya的博客 6920

四足机器人机械结构设计:从腿型到驱动的全面解析

本文全面解析了四足机器人机械结构设计的核心要点。资深工程师老张深入探讨了并联腿与串联腿的选型策略、不同腿型布局对稳定性的影响,并详细对比了皮带轮与连杆驱动方式的优劣。文章结合实战经验,强调了足端设计、材料选择及整体结构轻量化等关键细节,为机器人开发者提供了从理论到实践的宝贵指导。

assembly8low的博客 633

一列数的规则如下 : 1 、 1 、 2 、 3 、 5 、 8 、 13 、 21 、 34…… 求第 30 位数是多少, 用递归算法实现

方法定义 public static int number(int i) { if (i < 0) { return 0; } else if (i <= 2) { return 1;...

qq_31584315的博客 1255

华为OD机试 - TLV格式(Python/JS/C/C++ 2025 C卷 100分)

两端通过TLV格式的报文来通信,现在收到对端的一个TLV格式的消息包,要求生成匹配后的(tag,length,valueOffset)列表。和需要匹配的n个tag对应的n行匹配结果,每一行由长度和偏移量组成。第二行:需要匹配的tag数量n(0 < n < 1000)后面N行:需要匹配n个tag值(十进制表示),递增排列。标签10(0A)存在,长度3,valueOffset=2。标签15(0F)长度4,valueOffset=2。标签14(0E)长度2,valueOffset=8。

学Java,找哪吒 2041

OpenHarness代码解读

Harness 是包裹在大模型之外、为其赋予完整执行能力的全套基础设施。模型负责提供智能与推理,Harness 则为模型提供感知、行动、记忆、工具与安全约束,使其从语言模型变成可自主完成复杂任务的实用智能体。我这里把向量数据库方案定义为:把对话片段、事件、偏好、工具结果等切成 memory chunks,做 embedding,存进向量库,查询时靠 ANN 相似度召回,再交给 LLM 读。AAAI 的综述类论文就明确指出,很多 LLM agent 的长期记忆就是这么做的。AAAI 期刊把文件系统方案。

qq_52053775的博客 188

java编程题:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现

/** * 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现 * */ public class Test { public static void main(String[] args) { System.out.println("结果是:"+Test.foo(30)); } /** * 递归算法实现 */

一转身就是一辈子 1万+

tsfknn 预测R语言中的时间序列

rolling参数应该设置为FALSE,这使得最后的18个观测值成为测试集,其余的作为训练集;如果我们将rolling参数设置为默认值TRUE,那么测试集就不会是一个恒定的向量。lag 滞后参数表示时间序列数据的滞后值。在这个例子中,由于我们的时间序列数据是月度的,我们将参数设置为1:12。作为药品福利计划的一部分,澳大利亚健康保险委员会记录的属于ATC代码A10的产品的每月政府支出(百万美元)。我们将使用tsfknn包,它可以用来预测R语言中的时间序列。格式:ts类别的月度时间序列。

Mrrunsen的博客 323

算法:【一列数的规则如下: 1、1、2、3、5、8、13、21、34 ,求第30位数是多少, 用递归算法实现。(C#语言)】...

  /**//// &lt;summary&gt;         /// 一列数的规则如下: 1、1、2、3、5、8、13、21、34   求第30位数是多少, 用递归算法实现。(C#语言)         /// &lt;/summary&gt;         /// &lt;param name="pos"&gt;&lt;/param&gt;         /// &lt;ret...

weixin_33737134的博客 1140

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

一列数的规则如下:1、1、2、3、5、8、13、21、34…求第30位数是多少,用递归算法实现

代码】一列数的规则如下:1、1、2、3、5、8、13、21、34…求第30位数是多少,用递归算法实现。

weixin_45032903的博客 914

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现

一列数的规则如下: 1、1、2、3、5、8、13、21、34......  求第30位数是多少, 用递归算法实现 public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); }

ZZQ的专栏 6684

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

loner_li 机试题 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。

class Program     {         static void Main(string[] args)         {             //一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。             Console.WriteLine("Foo"+Foo(30));        

昂头天外 2365

一列数的规则如下: 1、1、2、3、5、8、13、21、34 求第30位数是多少, 用递归算法实现

public static int GetNumberAtPos(int pos)        {            if (pos == 0 || pos == 1)            {                return 1;            }            int res = GetNumberAtPos(pos - 1) + GetNumberAtPos

520

java编程题:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现

/** * 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现 * */public class Test { public static void main(String[] args) { System.out.println("结果是:"+Test.foo(30)); } /** * 递归算法实现 */ public st...

mangshidai的博客 4873

算法:【一列数的规则如下: 1、1、2、3、5、8、13、21、34 ,求第30位数是多少, 用递归算法实现。(C#语言)】

 public int GetNumberAtPos(int pos)    {        if (pos == 0 || pos == -1)        {            return 0;        }        if (pos == 1)        {            return 1;        }        int res = GetNumber

1704

一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现...

Test Result: Test Code: using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; name...

张中华的博客 762

一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。...

答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { ...

weixin_30802171的博客 131

笔试编程题整理1.一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。

using System; using System.Collections.Generic; using System.Linq; using System.Text;   namespace ConsoleApplication1 {     class Program     {         static void Main(string[] args)

FRIENDyy的专栏 1691

一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。(C#语言)...

static void Main(string[] args) { Console.WriteLine("请输入个正数:"); int I= int.Parse(Console.ReadLine()); Console.WriteLine("第{0}个数字是{1}", I, Fn(I)); ...

weixin_30673611的博客 492

一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现...

publicclassMainClass { publicstaticvoidMain() { Console.WriteLine(Foo(30)); } ...

weixin_30897079的博客 138

一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。//斐波那契数列...

1 public class MainClass 2 { 3 public static void Main() 4 { 5 Console.WriteLine(Foo(30)); 6 } 7 public static int Foo(int i) 8 { 9 if (i <= 0) 10 return ...

b93542的博客 1148
上一篇: 设计模式实例源码
下一篇: 数据库设计三范式的举例说明
zhen921
博客等级 码龄9年 58粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值