N阶台阶,每次只能走一个台阶或者两个台阶,求一共有多少种走法?

这篇博客探讨了如何解决N阶台阶问题,每次可以走一步或两步。作者提供了两种解决方案,一是递归求解,二是通过全排列的方式计算。以20阶台阶为例,通过递归公式n阶台阶的走法等于n-1阶和n-2阶的走法之和,或全排列方式递归计算。文章还提及了如果不限制走法种类,问题转化为求x+2y=20的解的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:

走上第20个台阶有2种情况,一种是站在第19个台阶上 在走一步就到达20

                                              还有一种就是站在第18个台阶上再走2步就到达20台阶

……

从此,n阶台阶的走法是n-1个台阶的走法加上n-2个台阶的走法


package com.zyh.test;


public class Test {
static int num=0;


/**
* @param 夜晚聊天小程序
*/
public static void main(String[] args) {
//System.out.println(Taijie(20));


System.out.println(Taijie2(0));

}

/**
* 递归求解台阶问题      第一种做法
* 一共20个台阶,每次只能走一步或者两步,问一共有多少种走法
* @param n为台阶数
* @return 一共多少种走法
*/
public static int Taijie(int n){
if(n==1)
num=1;
if(n==2)
num=2;
if(n>2)
num=Taijie(n-1)+Taijie(n-2);
return num;
}


/**
* 第二种做法
* 全排列做法,循环的测试每种做法
*/
public static int Taijie2(int n){
if(n==20)
return 1;
if(n>20)
return 0;

return Taijie2(n+1)+Taijie2(n+2);
}


}


如果不限制走的种类,要求计算需要走多少1步的和2步的,就转换成x+2y=20的解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值