栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

上楼梯经典题目(递归)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

上楼梯经典题目(递归)

小明想要走上一个一共有n级阶梯的楼梯,每次只能上一级或者两级,问小明一共有多少种上楼梯的方式?(用递归方法实现)

输入:数字n,代表共有n级楼梯。

输出:数字a,代表有a种上楼梯方式。

解题思路:

自定义函数内操作分析如下:

  1. 小明上到n级阶梯的上一步所在位置只有两种情况。

    1--小明在n-1级阶梯上。记此时上楼方式有ways(n-1)次

    2--小明在n-2级阶梯上。记此时上楼方式有ways(n-2)次

  2. 所以ways(n)就等于ways(n-1)与ways(n-2)之和

  3. 依2,ways(n-1)就等于ways(n-2)与ways(n-3)之和

    ways(n-2)就等于ways(n-3)与ways(n-4)之和

    ways(n-3)就等于ways(n-4)与ways(n-5)之和

    …………

  4. 再而ways(1)=1和ways(2)=2,函数ways内的操作便浮现而出了

源代码

#include
using namespace std;

int ways(int n)
{
	if (n == 1 || n == 2)
		return n;
	return ways(n - 1) + ways(n - 2);
}

int main()
{
	int n;
	cin >> n;

	int a;
	a = ways(n);

	cout << a;
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/655886.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号