题目:
一个共有20个台阶的楼梯,从下面走到上面。一次只能迈一个台阶或两个台阶,并且不能后退,走完这个楼梯共有多少种方法。
分析:
1 步台阶只有1种走法(1)
2步台阶2种(11、2)
3步台阶有3种(111、12、21)
4 步台阶有5种(1111、112、121、211、22)
5 步台阶有8种(11111、1112、1121、1211、122、2111、212、221)
6步台阶有13种(111111、11112、11121、11211、1122、12111,1212、1221、2111、2112、2121、2211、222)
可以发现每一个台阶数的走法对应为比它少一步各种走法前加一个1步和比它少两步的走法前加一个2步,并构成一个Fibonacci数列。
代码如下:
Private Sub Command1_Click()
Dim s() As String, num As Long, i As Long
For i = 1 To 10
upstairs i, s, num
Debug.Print Join(s, vbCrLf)
Debug.Print num & " 种走法"
Next
End Sub
Sub upstairs(ByVal stairnum As Integer, ByRef steps() As String, ByRef methodn As Long)'将stairnum台阶时的所有可能走法以类似“111222 ”格式保存在数组steps()中,走法数目保存在methodn中
Dim i As Long
If stairnum = 1 Then
methodn = 1
ReDim steps(1 To methodn)
steps(1) = 1
End If
If stairnum = 2 Then
methodn = 2
ReDim steps(1 To methodn)
steps(1) = 11
steps(2) = 2
End If
If stairnum > 2 Then
Dim a() As String, b() As String, methoda As Long, methodb As Long
upstairs stairnum - 1, a, methoda ’递归调用
upstairs stairnum - 2, b, methodb '递归调用
ReDim steps(methoda + methodb)
For i = 1 To methoda
steps(i) = 1 & a(i)
Next
For i = 1 To methodb
steps(i + methoda) = 2 & b(i)
Next
methodn = methoda + methodb
End If
End Sub
分享到:
相关推荐
### Python基于递归算法实现的走迷宫问题详解 #### 一、递归算法简介 在探讨如何使用Python实现走迷宫问题之前,我们先来了解一下递归算法的基本概念及其应用场景。 **递归**是一种非常重要的算法思想,在计算机...
无论是计算上楼梯的走法,还是找出骨牌铺法的总数,或者是集合的划分问题,递归算法都能提供优雅且高效的解决方案。在编程实践中,熟练掌握递归算法不仅能够提高问题解决能力,还能帮助我们更好地理解和抽象复杂问题...
【Pascal递归算法在NOIP竞赛中的应用】 在信息学奥林匹克竞赛(NOIP)中,递归算法是一项重要的技能,对于解决复杂问题至关重要。递归算法是指一个过程(或函数)通过直接或间接地调用自身来解决问题的方法。递归...
递归算法是一种强大的编程工具,尤其在解决复杂问题时,如计算阶乘、处理数列、解决汉诺塔问题等。下面将详细解释这些递归算法的应用。 1. 计算阶乘(n!):阶乘是数学中的一个重要概念,表示从1乘到n的所有正整数...
下面我们将深入探讨回溯算法的概念、应用场景以及如何用C语言来实现爬楼梯问题。 回溯算法主要应用于解决组合优化问题,如八皇后问题、迷宫求解、图的着色问题等。其核心特点是通过递归或迭代的方式遍历所有可能的...
本文实例讲述了Python3爬楼梯算法。分享给大家供大家参考,具体如下: 假设你正在爬楼梯。需要 n 步你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数...
本章内容主要介绍了递归算法在不同场景下的应用和设计。通过递归算法解决特定问题,可以有效地简化问题的复杂性,并通过不断将问题分解为更小的子问题来达到解决目的。在递归函数设计中,需要注意递归出口(也称为...
这里是本蒟蒻整理/写的递归...包含:过河卒、过河卒升级版、汉诺塔、级数求和、勒让德多项式、流感传染、判断回文、判断元素是否存在、平方根级数、平面分割升级版、全排列递归版、位数问题、字符串倒序输出、走楼梯。
递归算法通常涉及一个或多个基本情况(base case),这些情况可以直接解决,以及一个或多个递归步骤,将问题分解为更小的子问题。然而,为了防止无限递归导致程序崩溃,必须确保每次递归调用都在向基本情况靠近。 ...
走踏板日程。 问:如何确定哪种方法最适合特定问题? 2017 年 4 月 13 日 - 回溯 & 动态规划 & 递归 & 'D&C' & Greedy 好参考: 为什么叫DP? DP O(N) 时间,O(1) 空间,易于理解的解释 问:当你在截止日期前工作时...
leetcode走楼梯 Algorithms 基础算法实现 一、 排序算法 二、Leetcode 数组和链表 逻辑简单,注重实现 002 024 025 解决方法:尾插法 141 解决方法:集合,即哈希表;快慢指针 142 206 解决方法:迭代:双指针;递归...
### 递归的基本概念 递归是一种编程技术,它允许函数调用自身来解决问题。...在设计递归算法时,应确保递归的深度不会超过函数的调用栈大小,并且递归调用过程中应尽量减少不必要的计算和存储,以优化性能。
2. 楼梯走法问题(stairs) 该问题是一个经典的递推问题,可以用递归函数来解决。在这个问题中,每一步有两种走法:一是走一阶,二是走两阶。要求编写递归程序计算走完N级台阶有多少种不同的走法。这个问题的递推...
- `Try`函数用于递归地计算所有可能的走法。 - 在每次递归调用时,考虑当前可以跳过的台阶数。 - 计算完所有走法后,统计总数并输出。 **示例运行:** 假设`N=5`,程序会输出所有可能的走法,并给出总走法数量。 #...
通过上述分析可以看出,在解决N阶台阶走法问题时,递推算法相比递归算法具有更高的效率。然而,递归方法因其清晰简洁的逻辑仍然值得学习和掌握,它有助于培养解决问题的基本思路。无论选择哪种方法,关键是理解背后...
"超级楼梯"题目可能涉及递归、动态规划、贪心算法等经典算法,旨在考察程序员的逻辑思维和问题解决能力。 首先,我们来解析这个"超级楼梯"的题目。想象一个由多个台阶组成的楼梯,每次你可以跨上1个或2个台阶。问题...
走踏板Leetcode、数据结构和算法(带测试) 我对 Leetcode 问题的解决方案的集合,参考了各种算法和数据结构。 每个解决方案还包括 Jest 测试,以帮助将测试驱动开发 (TDD) 内化为我工作流程中的一种习惯。 归并排序...
假设有一座楼梯,每步可以走一级或者两级,问有多少种不同的方式可以走完这n级台阶。这个问题可以通过斐波那契数列的特性来解决。具体来说,到达第n级台阶的方法数量等于到达第n-1级和第n-2级台阶的方法数量之和。...
本文实例讲述了Python走楼梯问题解决方法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #!python3 ''' 下楼问题。从楼上走到楼下共有h个台阶,每一步有两种走法: 走1个台阶,走2个台阶,问有多少可...
7. **学习建议**:鼓励孩子多动手尝试,用不同的方式走楼梯,直观感受不同步数组合的可能性。同时,家长和教师可以引导孩子利用图形或图表来辅助理解和记忆,帮助他们更好地掌握这个知识点。 总之,《上楼梯问题》...