C语言:跳楼梯问题(斐波那契数列)(vs)(递归)
一,问题:
小只因跳楼梯:
众所周知美国校队只因一次可以跳上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)(递归)相关推荐
- 3-3 兔子跳楼梯 3-4 斐波那契数列(II)
3-3 兔子跳楼梯 小兔子喜欢蹦蹦跳跳上楼梯 ,它能一次跳1阶楼梯,也能一次跳上2阶楼梯.问小兔子要上一个n阶的楼梯,最多有多少种不同上楼的走法? 输入格式: 输入一行包含一个整数 n,表示有几阶楼梯 ...
- 用C语言写爬楼梯(斐波那契数列的应用,迭代与递归)爬楼梯问题超详细,看完这一篇就够了。
爬楼梯问题实际上就是斐波那契数列的应用,首先我们讲讲什么是斐波那契数列.因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列" ...
- 力扣一日一练(7)——爬楼梯(斐波那契数列)
题目:爬楼梯(斐波那契数列) 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例: 示例 1: ...
- 斐波那契数列(递归+源码+注释)
斐波那契数列(递归+源码+注释) 公元 1202 年,意大利数学家莱昂纳多·斐波那契提出了具备以下特征的数列: 前两个数的值分别为 0 .1 或者 1.1: 从第 3 个数字开始,它的值是前两个数字的 ...
- 斐波那契数列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() #斐波那契数列 ...
- (兔子繁殖问题)斐波那契数列:递归非递归解法
题目 假设一对幼年兔子需要一个月长成成年兔子,一对成年兔子一个月后每个月都可以繁衍出一对新的幼年兔子.不考虑死亡的情况,问第 N 个月时共有多少对兔子? 这是一个典型的斐波那契数列问题,即 第一个月有 ...
- Python输出斐波那契数列【递归、迭代】
Python输出斐波那契数列[递归.迭代] 首先 斐波那契数列的定义是什么? 斐波那契数列指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波那契数列以如下被以递推的方 ...
- python leetcode 爬楼梯问题 斐波那契数列
爬楼梯 问题描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: ...
- 一只青蛙一次可以跳一级或二级台阶,请问跳n级台阶有多少次跳法之斐波那契数列的非递归写法
对于这个问题 前三次都好算分别为1,2,3次,后面多的话不好简单计算 当第n级台阶时,因为青蛙只能跳一级或二级台阶,所以第n级只有两种方法跳过来, 即,从前一级(n-1)或前两级(n-2),所以调到这 ...
- 青蛙跳台阶问题(斐波拉契数列、动态规划)
青蛙跳台阶问题 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:10 ...
最新文章
- 程序员都应该知道的JVM参数
- 1. python 字符串简介与常用函数
- 广域网域内流量工程优化—Vecloud
- WebStorm2018配置nodejs
- C++/CLI Winform中调用DLL的三种方法
- C++设计模式之抽象工厂模式
- 编写高质量代码改善C#程序的157个建议——建议130:以复数命名枚举类型,以单数命名枚举元素...
- 基于百度AI+jquery-webcam+servlet实现人脸识别登录,兼容各主流浏览器
- 2.17_knight_tour_骑士周游问题 (深度优先 DFS)
- iOS底层探索之Block(三)——Block的本质
- 诺基亚c7微信 服务器忙,诺基亚C7怎么刷机
- Ubuntu图形化数据库连接工具
- 图像识别用python还是matlab_用于图像识别的五大最佳编程语言!
- js ajax 异步上传图片,javascript实现图片伪异步上传
- 关于配置移动硬盘上的Eclipse+mingw+qt4.5.3的问题解决!
- python教你如何把自己的微信变成机器人
- HTB_Secret
- class文件加密和解密
- Windows系统下的IE浏览器降级
- SkyEye与Trace32集成并搭建调试环境
热门文章
- 控制器数据数据到btu_hci_msg_process调用流程
- 优信拍集团php面试题_【优信拍PHP高级工程师面试一般都会问什么问题?】-看准网...
- TiDB数据库架构——TiDB Server
- 基于Bootstrap的后台管理界面
- 灯泡开关python
- input 输入框只允许输入整数或非负整数或限制输入中文
- VisualTransformer(ViT)视觉任务骨干网络
- 盘点 | 2017年,哪些黑科技改变了我们的生活?
- 【漫画】员工当腻了,不如做领导!
- 黑客盗号:窃取他人信息,行骗利器