dw怎么做网站珠海网站建设方案开发
dw怎么做网站,珠海网站建设方案开发,广告制作安装工,南通网站推广怎么收费#xff08;请先看置顶博文#xff09;本博打开方式#xff0c;请详读_liO_Oil的博客-CSDN博客_怎么把androidstudio卸载干净 题目大意#xff1a;王老师爬楼梯#xff0c;他可以每次走1级或者2级#xff0c;输入楼梯的级数#xff0c;求不同的走法数。例如#xff1a;…请先看置顶博文本博打开方式请详读_liO_Oil的博客-CSDN博客_怎么把androidstudio卸载干净 题目大意王老师爬楼梯他可以每次走1级或者2级输入楼梯的级数求不同的走法数。例如楼梯一共有3级他可以每次都走一级或者第一次走一级第二次走两级也可以第一次走两级第二次走一级一共3种方法。编写一个程序要求输入楼层输出王老师上楼的方法总数。
一、大致思路
这道题其实之前大家都有接触过这道题目的解法也很多今天要介绍的是递归解法。
我们先把n1n2n3n4n5的情况列举出来发现有一个规律那就是我们常见的斐波那契数列的规律。既然已经发现这个规律那么就对其进行分类并递归解决问题。为了让大多数检验结果能顺利输出在此运用long大数定义。因为题目简单所以就没有在思路上多加叙述如若不解还请留言很喜欢与大家交流学习
二、具体实现
#includeiostream
#includecmath
using namespace std;
long long calculate(int n)//用long long定义整形范围更大
{long long a[100] { 0 };a[0] 1;//根据逻辑推理得出所要求的方法数是前两个的和。a[1] 2;//同上if (n 1)return 1;else if (n 2)return 2;elsereturn calculate(n - 1) calculate(n - 2);//递归求解
}
int main()
{int n;cout 请输入上楼的楼梯数: endl;while (cin n){if (n 0){cout 输入有误请重新输入 endl;continue;}cout 对应的走法有: endl;cout calculate(n) endl;cout 王老师已成功上楼 endl;cout 请输入下一上楼的楼梯数:无其他输入请按EOF结束 endl;}return 0;
}那么突发奇想要是王老师每次走1级或者2级或者3级呢这样该如何求解呢
愚拙的我将1-6的方法种类全部列出发现了这个规律
calculatencalculaten-1calculaten-2calculaten-3。
如下图所示我的字不是下面这样的 二、具体实现
#includeiostream
#includecmath
using namespace std;
long long calculate(int n)//用long long定义整形范围更大
{long long a[100] { 0 };a[0] 1;//根据逻辑推理得出所要求的方法数是前三个的和。a[1] 2;//同上a[3] 4;//同上if (n 1)return 1;else if (n 2)return 2;else if (n 3)return 4;elsereturn calculate(n - 1) calculate(n - 2) calculate(n - 3);//递归求解
}
int main()
{int n;cout 请输入上楼的楼梯数: endl;while (cin n){if (n 0){cout 输入有误请重新输入 endl;continue;}cout 对应的走法有: endl;cout calculate(n) endl;cout 王老师已成功上楼 endl;cout 请输入下一上楼的楼梯数:无其他输入请按EOF结束 endl;}return 0;
}解决题目的前提
1、理解题意
2、列举情况并细心观察
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88013.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!