当前位置: 首页 > news >正文

算法题(2):三步问题

审题:需要输出小孩上楼梯的方式的数量(需要取模)

思路:

如果正面来思考这个问题会无从下手,因为我们的分类太多了,没有办法把大问题缩小。

但是如果反过来思考,小孩最后一步有几种情况,那就简单了,因为小孩只可以有三种步幅,分别是1步,2步,3步。

也就是说,小孩上到最后一级台阶的方式就是最后走1/2/3步的那三个台阶的方式数相加

f(n)= f(n-1) + f(n-2) +f(n-3)

此时我们的递归的式子就出来了

所以本题我们先尝试写递归的方法,如果超时了再换循环写法。

 方法一:递归

这个递归的逻辑就是每次都返回n-1台阶+n-2台阶+n-3台阶的方式数,最后递归到第一到三级台阶结束递归。

这里由于递归比较耗时间,所以没通过。那么我们换循环的方式来写

方法二:循环

 

利用数组进行数据存储,并把下标和台阶数对齐(这样子就可以直接返回台阶对应的元素内容了)

和递归从后往前递归不一样,循环需要从前往后依次算出走到对应台阶的方式数,最后全部计算出来后,再返回第n个台阶的方式数


http://www.mrgr.cn/news/80225.html

相关文章:

  • 前端(六)浮动流
  • 【2025最新版】搭建个人博客教程
  • 基于Android的生活记录app的设计与实现
  • 【面试宝典】机器学习:深度解析高频面试题与解答策略
  • openEuler centOS 统信UOS 配置ip的方式。
  • 数据仓库-基于角色的权限管理(RBAC)
  • 金蝶云资料汇总
  • C++----类与对象(上篇)
  • AOF和RDB【Redis持久化篇】
  • etcd节点扩/缩容
  • 【图像处理lec3、4】空间域的图像增强
  • ubuntu 下的sqlite3
  • 【老白学 Java】日期 / 时间格式化
  • 实拍技巧和富士通用参数
  • 直流开关电源技术及应用
  • 扩展tinyplay使其自适应不同声道数量的媒体
  • 17、ConvMixer模型原理及其PyTorch逐行实现
  • 网络工程师常用软件之配置对比软件
  • 【kubernetes】kubectl get nodes报NotReady
  • 文件的读写
  • Docker中 localhost 与 0.0.0.0 的区别详解
  • Deveco Studio首次编译项目初始化失败
  • boost电路的同步和异步模式 及CCM、DCM模式 介绍
  • 计算机网络-传输层 TCP协议(上)
  • IOS通过WDA自动化中遇到的问题
  • 进制的转换