`
eimhee
  • 浏览: 2153164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于走楼梯的递归算法

阅读更多

题目:

一个共有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基于递归算法实现的走迷宫问题详解 #### 一、递归算法简介 在探讨如何使用Python实现走迷宫问题之前,我们先来了解一下递归算法的基本概念及其应用场景。 **递归**是一种非常重要的算法思想,在计算机...

    pascal递归算法.doc

    无论是计算上楼梯的走法,还是找出骨牌铺法的总数,或者是集合的划分问题,递归算法都能提供优雅且高效的解决方案。在编程实践中,熟练掌握递归算法不仅能够提高问题解决能力,还能帮助我们更好地理解和抽象复杂问题...

    pascal递归算法 noip竞赛材料.doc

    【Pascal递归算法在NOIP竞赛中的应用】 在信息学奥林匹克竞赛(NOIP)中,递归算法是一项重要的技能,对于解决复杂问题至关重要。递归算法是指一个过程(或函数)通过直接或间接地调用自身来解决问题的方法。递归...

    递归算法练习.pdf

    递归算法是一种强大的编程工具,尤其在解决复杂问题时,如计算阶乘、处理数列、解决汉诺塔问题等。下面将详细解释这些递归算法的应用。 1. 计算阶乘(n!):阶乘是数学中的一个重要概念,表示从1乘到n的所有正整数...

    c语言爬楼梯回溯算法

    下面我们将深入探讨回溯算法的概念、应用场景以及如何用C语言来实现爬楼梯问题。 回溯算法主要应用于解决组合优化问题,如八皇后问题、迷宫求解、图的着色问题等。其核心特点是通过递归或迭代的方式遍历所有可能的...

    Python3爬楼梯算法示例

    本文实例讲述了Python3爬楼梯算法。分享给大家供大家参考,具体如下: 假设你正在爬楼梯。需要 n 步你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数...

    第5章递归.pdf

    本章内容主要介绍了递归算法在不同场景下的应用和设计。通过递归算法解决特定问题,可以有效地简化问题的复杂性,并通过不断将问题分解为更小的子问题来达到解决目的。在递归函数设计中,需要注意递归出口(也称为...

    c++递归/递推经典题目

    这里是本蒟蒻整理/写的递归...包含:过河卒、过河卒升级版、汉诺塔、级数求和、勒让德多项式、流感传染、判断回文、判断元素是否存在、平方根级数、平面分割升级版、全排列递归版、位数问题、字符串倒序输出、走楼梯。

    PASCAL递归与回溯算法PPT教案.pptx

    递归算法通常涉及一个或多个基本情况(base case),这些情况可以直接解决,以及一个或多个递归步骤,将问题分解为更小的子问题。然而,为了防止无限递归导致程序崩溃,必须确保每次递归调用都在向基本情况靠近。 ...

    leetcode走楼梯-algorithms:算法

    走踏板日程。 问:如何确定哪种方法最适合特定问题? 2017 年 4 月 13 日 - 回溯 & 动态规划 & 递归 & 'D&C' & Greedy 好参考: 为什么叫DP? DP O(N) 时间,O(1) 空间,易于理解的解释 问:当你在截止日期前工作时...

    leetcode走楼梯-Algorithms:数据结构和算法

    leetcode走楼梯 Algorithms 基础算法实现 一、 排序算法 二、Leetcode 数组和链表 逻辑简单,注重实现 002 024 025 解决方法:尾插法 141 解决方法:集合,即哈希表;快慢指针 142 206 解决方法:迭代:双指针;递归...

    ch03 递归(二).pdf

    ### 递归的基本概念 递归是一种编程技术,它允许函数调用自身来解决问题。...在设计递归算法时,应确保递归的深度不会超过函数的调用栈大小,并且递归调用过程中应尽量减少不必要的计算和存储,以优化性能。

    信息学奥赛一本通-教程PPT课件(第五版)算法部分 第三章 递推算法.pdf

    2. 楼梯走法问题(stairs) 该问题是一个经典的递推问题,可以用递归函数来解决。在这个问题中,每一步有两种走法:一是走一阶,二是走两阶。要求编写递归程序计算走完N级台阶有多少种不同的走法。这个问题的递推...

    递归函数大集成

    - `Try`函数用于递归地计算所有可能的走法。 - 在每次递归调用时,考虑当前可以跳过的台阶数。 - 计算完所有走法后,统计总数并输出。 **示例运行:** 假设`N=5`,程序会输出所有可能的走法,并给出总走法数量。 #...

    Python解决N阶台阶走法问题的方法分析

    通过上述分析可以看出,在解决N阶台阶走法问题时,递推算法相比递归算法具有更高的效率。然而,递归方法因其清晰简洁的逻辑仍然值得学习和掌握,它有助于培养解决问题的基本思路。无论选择哪种方法,关键是理解背后...

    编程之超级楼梯

    "超级楼梯"题目可能涉及递归、动态规划、贪心算法等经典算法,旨在考察程序员的逻辑思维和问题解决能力。 首先,我们来解析这个"超级楼梯"的题目。想象一个由多个台阶组成的楼梯,每次你可以跨上1个或2个台阶。问题...

    leetcode走楼梯-leetcode:Leetcode问题、算法和数据结构

    走踏板Leetcode、数据结构和算法(带测试) 我对 Leetcode 问题的解决方案的集合,参考了各种算法和数据结构。 每个解决方案还包括 Jest 测试,以帮助将测试驱动开发 (TDD) 内化为我工作流程中的一种习惯。 归并排序...

    算法设计与分析小论文

    假设有一座楼梯,每步可以走一级或者两级,问有多少种不同的方式可以走完这n级台阶。这个问题可以通过斐波那契数列的特性来解决。具体来说,到达第n级台阶的方法数量等于到达第n-1级和第n-2级台阶的方法数量之和。...

    Python走楼梯问题解决方法示例

    本文实例讲述了Python走楼梯问题解决方法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #!python3 ''' 下楼问题。从楼上走到楼下共有h个台阶,每一步有两种走法: 走1个台阶,走2个台阶,问有多少可...

    小学三年级奥数题第3课《上楼梯问题》试题附答案.docx

    7. **学习建议**:鼓励孩子多动手尝试,用不同的方式走楼梯,直观感受不同步数组合的可能性。同时,家长和教师可以引导孩子利用图形或图表来辅助理解和记忆,帮助他们更好地掌握这个知识点。 总之,《上楼梯问题》...

Global site tag (gtag.js) - Google Analytics