爬楼梯算法问题分析(不止三步)

本文详细分析了爬楼梯问题的算法,从基础的递归思路出发,探讨了不同阶梯数下的解决方案。通过递推公式f(n) = f(n-1)+f(n-2)+...+f(1),阐述了如何解决阶梯数大于3的情况,并引入了在最大爬阶梯数限制m下的优化算法。

算法分析:

  1. 阶梯数为1,爬楼梯方法就一种,为1,f(1)=1;
  2. 阶梯数大于1的时候,递归求解:阶梯数为2的时候,最多两种方式上楼:1 ,1;2  =>  f(2)=2;
  3. 爬三层楼梯的时候,爬1层,再爬两层,则是爬三层楼梯由爬一层楼梯和爬两层楼梯的情况的结合:f(3)=f(2)+f(1);
  4. 以此类推:f(n) = f(n-1)+f(n-2)+...+f(n-n+1)   =>   f(n)=f(n-1)+f(n-2)+...+f(1);此种情况,设置的最大爬阶梯数为n-1;
  5. 当限定最大爬阶梯数量为m时候(0 ≤ m ≤ n-1) 那么,f(n)=f(n-1)+f(n-2)+...+f(n-m)。

 /**
  * 
  */
package com.cn.count;


import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Scanner;


import javax.swing.JFrame;


/**
 * 
 * 算法-爬楼梯问题
 * 
 * @author ymf
 * 
 */
public class Count extends JFrame{

	/**
	 * main方法
	 * 
	 * @param args
	 */
	public static void mai
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值