一,问题:

小只因跳楼梯:

众所周知美国校队只因一次可以跳上1级台阶,也可以跳上2级。求该只因跳上一个n级的台阶总共有多少种跳法?

二,思路:

/*从逆向想:

x层的走法其实就是其前一层或前两层的走法总数字和,因为走到x层只有两种情况,一是从(x-1)层走一阶,或者是从(x-2)走两阶;
同理:从逆向想就有:
(x-1)层走法:(x-3)或(x-4)-->(x-1),

(x-2)层走法:(x-4)或(x-3)-->(x-2)......*/
/*从正向想:
当x==2时,有可能从1或0出发,故走法为(1+1)种走法;
当x==3时,可能从2或1出发,故有((1+1)+1)种走法;
当x==4时,可能从3或2出发,所以有(((1+1)+1)+(1+1))种走法......
其他这就是递推关系实现的*/

通过规律:从第二阶开始都满足FBN(n)=FBN(n-1)+FBN(n-2);所以我们便可以利用“递归”去实现该问题了;

三,实现过程:

(1)编写“递归”所用到的函数

int FBL(int x)
{if (x == 0 || x == 1)//x==0时,不走也是一种走法,当x==1时,由于游戏规则,一次要么一阶要么两阶,故只有一种走法{return 1;}else{return FBL(x - 1) + FBL(x - 2);}
}

(2)编写主函数:

int main()
{int n;printf("请输入楼梯的层数:");scanf_s("%d", &n);int result = FBL(n);printf("跳上一个n级的台阶总共有%d种跳法", result);return 0;
}

四,代码加运行:

#include<stdio.h>
int FBL(int x);
int FBL(int x)
{if (x == 0 || x == 1)//x==0时,不走也是一种走法,当x==1时,由于游戏规则,一次要么一阶要么两阶,故只有一种走法{return 1;}else{return FBL(x - 1) + FBL(x - 2);}
}
int main()
{int n;printf("请输入楼梯的层数:");scanf_s("%d", &n);int result = FBL(n);printf("跳上一个n级的台阶总共有%d种跳法", result);return 0;
}

C语言:跳楼梯问题(斐波那契数列)(vs)(递归)相关推荐

  1. 3-3 兔子跳楼梯 3-4 斐波那契数列(II)

    3-3 兔子跳楼梯 小兔子喜欢蹦蹦跳跳上楼梯 ,它能一次跳1阶楼梯,也能一次跳上2阶楼梯.问小兔子要上一个n阶的楼梯,最多有多少种不同上楼的走法? 输入格式: 输入一行包含一个整数 n,表示有几阶楼梯 ...

  2. 用C语言写爬楼梯(斐波那契数列的应用,迭代与递归)爬楼梯问题超详细,看完这一篇就够了。

    爬楼梯问题实际上就是斐波那契数列的应用,首先我们讲讲什么是斐波那契数列.因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列" ...

  3. 力扣一日一练(7)——爬楼梯(斐波那契数列)

    题目:爬楼梯(斐波那契数列) 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例: 示例 1: ...

  4. 斐波那契数列(递归+源码+注释)

    斐波那契数列(递归+源码+注释) 公元 1202 年,意大利数学家莱昂纳多·斐波那契提出了具备以下特征的数列: 前两个数的值分别为 0 .1 或者 1.1: 从第 3 个数字开始,它的值是前两个数字的 ...

  5. 斐波那契数列python递归 0、1、1、2、3_python: 递归和递推方法求斐波那契数列

    1.  斐波那契数列 序号 0 1 2 3 4 5 6... 数列 0 1 1 2 3 5 8... 2.  三种程序 import time time1 = time.clock() #斐波那契数列 ...

  6. (兔子繁殖问题)斐波那契数列:递归非递归解法

    题目 假设一对幼年兔子需要一个月长成成年兔子,一对成年兔子一个月后每个月都可以繁衍出一对新的幼年兔子.不考虑死亡的情况,问第 N 个月时共有多少对兔子? 这是一个典型的斐波那契数列问题,即 第一个月有 ...

  7. Python输出斐波那契数列【递归、迭代】

    Python输出斐波那契数列[递归.迭代] 首先 斐波那契数列的定义是什么? 斐波那契数列指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波那契数列以如下被以递推的方 ...

  8. python leetcode 爬楼梯问题 斐波那契数列

    爬楼梯 问题描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: ...

  9. 一只青蛙一次可以跳一级或二级台阶,请问跳n级台阶有多少次跳法之斐波那契数列的非递归写法

    对于这个问题 前三次都好算分别为1,2,3次,后面多的话不好简单计算 当第n级台阶时,因为青蛙只能跳一级或二级台阶,所以第n级只有两种方法跳过来, 即,从前一级(n-1)或前两级(n-2),所以调到这 ...

  10. 青蛙跳台阶问题(斐波拉契数列、动态规划)

    青蛙跳台阶问题 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:10 ...

最新文章

  1. 程序员都应该知道的JVM参数
  2. 1. python 字符串简介与常用函数
  3. 广域网域内流量工程优化—Vecloud
  4. WebStorm2018配置nodejs
  5. C++/CLI Winform中调用DLL的三种方法
  6. C++设计模式之抽象工厂模式
  7. 编写高质量代码改善C#程序的157个建议——建议130:以复数命名枚举类型,以单数命名枚举元素...
  8. 基于百度AI+jquery-webcam+servlet实现人脸识别登录,兼容各主流浏览器
  9. 2.17_knight_tour_骑士周游问题 (深度优先 DFS)
  10. iOS底层探索之Block(三)——Block的本质
  11. 诺基亚c7微信 服务器忙,诺基亚C7怎么刷机
  12. Ubuntu图形化数据库连接工具
  13. 图像识别用python还是matlab_用于图像识别的五大最佳编程语言!
  14. js ajax 异步上传图片,javascript实现图片伪异步上传
  15. 关于配置移动硬盘上的Eclipse+mingw+qt4.5.3的问题解决!
  16. python教你如何把自己的微信变成机器人
  17. HTB_Secret
  18. class文件加密和解密
  19. Windows系统下的IE浏览器降级
  20. SkyEye与Trace32集成并搭建调试环境

热门文章

  1. 控制器数据数据到btu_hci_msg_process调用流程
  2. 优信拍集团php面试题_【优信拍PHP高级工程师面试一般都会问什么问题?】-看准网...
  3. TiDB数据库架构——TiDB Server
  4. 基于Bootstrap的后台管理界面
  5. 灯泡开关python
  6. input 输入框只允许输入整数或非负整数或限制输入中文
  7. VisualTransformer(ViT)视觉任务骨干网络
  8. 盘点 | 2017年,哪些黑科技改变了我们的生活?
  9. 【漫画】员工当腻了,不如做领导!
  10. 黑客盗号:窃取他人信息,行骗利器