【面试题】N阶台阶的走法种数问题(分支思想)

来源:互联网 发布:销巴世界淘宝返利 编辑:程序博客网 时间:2024/05/20 18:18

【面试题】N阶台阶的走法种数问题(分支思想)

【面试题】在一些技术面试中,经常会有N阶台阶每次走一步或两步,问有多少种走法的题目,实际上就是斐波那契数列算法,在此本人通过分支思想进行统计方法数。

一、题目重述
总共有100阶台阶,每次走一步或两步,请问共有几种走法?
二、解决方案
可以模拟树分支的思想,通过for循环将每次选择一步或者两步的走法以分支形式分开,并将剩下的阶数(stair - i)作为参数进入递归,当stair为0,即到分支末,统计分支数,即可得方法数。
三、代码实现

#include <iostream>using namespace std;const  int Stair = 100; //台阶数static int num = 0; //统计方法数void Add_up(int stair){    if (0 == stair || 1 == stair)//当stair为0,表示已到分支末;当stair为1,为避免stair - i出现小于0的情况,在此特意选出来     {        num++;        return;     }     for (int i = 1; i <= 2; i++)//每次可选择走一步或两布,根据选择不同划出分支         Add_up(stair - i);//减去所走步数,进入新的递归} void main() {     Add_up(Stair);     cout << "共有" << num << "种走法" << endl;}

四、结束语
类似可以走一步或两步或三步的题目,可以参考上述代码修改for循环 i 的最大值和注意(stair - i)的值小于0的情况即可。
希望对大家有帮助。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗得了尿结石怎么办 生理期第四天必须游泳怎么办 碎石后吐的厉害怎么办 白细胞高红细胞高血尿怎么办? 早期肾癌术后复发该怎么办 肾结石因运动引起尿血怎么办 宝宝大便镜检阳性潜血怎么办 尿不尽刺痛带血怎么办 狗狗拉肚子拉血怎么办 肾血肿怎么办才吸收快 体检尿蛋白高3怎么办 肾炎会引起脸肿怎么办 12小孩尿蛋白3是怎么办 肝癌介入手术后肝功能不好怎么办 屁多且臭便秘怎么办 肝癌术1年后复发怎么办 怀孕便秘怎么办或大便太干拉不出 肠鸣便秘怎么办多尿 奥司他韦过量怎么办 憋的时间长尿痛怎么办 手过敏了怎么办最简单 肾结石不痛但是有血尿怎么办 儿童医院血液科挂不到号怎么办 搬完重物手抖怎么办 弯腰搬重物腰疼怎么办 搬了重物后腰疼怎么办 例假不走公务员体检血尿怎么办 憋尿久了尿不出来怎么办 憋尿引起的总有尿意怎么办 如果孕妇憋尿了怎么办 孕妇憋尿半个月怎么办 尿憋久了排空后膀胱疼怎么办 胸疼肚子疼不规则流血怎么办 上小便下面会痛怎么办 两岁宝贝憋尿怎么办 打激素脸胖了怎么办 医生写的病历看不懂怎么办 怀孕尿蛋白3个加怎么办 两周岁宝宝牙齿坏掉怎么办 前列缐炎引起尿血怎么办 牙齿牙根长在神经里怎么办