递归的感悟

 求n阶乘的VB函数过程。
Private Function F( byval n As Integer ) As long
    If n=1 Then
        F=1
    Else:
        F=n*F(n-1)
    End If
End Function
让我们来跟踪这个程序的计算过程,令n=4调用这个函数,用下面的形式来表示递归求解的过程:
(1)F(4)=4×F(3)      ‘n=4调用函数过程F(3)
(2)F(3)=3×F(2)      ‘n=3调用函数过程F(2)
(3)F(2)=2×F(1)      ‘n=2调用函数过程F(1)
(4)F(1)=1             ‘n=1求得F(1)的值
(5)F(2)=2×1=2       ‘回归,n=2,求得F(2)的值
(6)F(3)=3×2=6       ‘回归,n=3,求得F(3)的值
(7)F(4)=4×6=24      ‘回归,n=4,求得F(4)的值求

Private Function Fibo(ByVal n As Integer) As Integer
                    ‘函数的返回值为第n个斐波那契数
    If (n=0) Then
        Fibo=0
    ElseIf n=1 Then
        Fibo=1
    Else: Fibo=Fibo(n-1)+Fibo(n-2)
    End If
End Function  

Dim q, le, ss
Sub 排列组合()
On Error Resume Next
ss = ""
strA = "运行下看"
le = Len(strA)
    处理 strA, le
MsgBox ss
End Sub
Function 处理(strA, le)
    For i = 1 To Len(strA)
        a = Mid(strA, i, 1)
        sy = Left(strA, i - 1) & Right(strA, Len(strA) - i)
        q = q & a
     If Len(q) = le Then
     ss = ss & q & Chr(13)
     End If
        处理 sy, le
    Next
q = Left(q, Len(q) - 1)
End Function  

Sub sdf()
    a = "中文论坛"
    l = Len(a)
    For i = 1 To 4
        For j = 1 To 4
Function F(n)
    If n = 1 Then
        F = 1
        Else:
        F = n * F(n - 1)
    End If  

End Function
Function e(n)
    If n = 1 Then
        e = 1
    Else
        e = e(n - 1) + F(n)
    End If
End Function
Sub sdf()
    a = "中文论坛"
    l = Len(a)
    For i = 1 To 4
        For j = 1 To 4
            For k = 1 To 4
                For l = 1 To 4
                    If Mid(a, i, 1) <> Mid(a, j, 1) And Mid(a, i, 1) <> Mid(a, k, 1) And Mid(a, i, 1) <> Mid(a, l, 1) And Mid(a, j, 1) <> Mid(a, k, 1) _
                    And Mid(a, j, 1) <> Mid(a, l, 1) And Mid(a, k, 1) <> Mid(a, l, 1) Then
                    Debug.Print Mid(a, i, 1) & Mid(a, j, 1) & Mid(a, k, 1) & Mid(a, l, 1)
                    End If
                Next
            Next
        Next
    Next  

End Sub
双重递归
Sub 计算阶乘和() ‘1!+2!+3!+…+n! ;使用双重递归完成
    Debug.Print e(5)
End Sub  

word表格转为分数:
Dim s
Sub sdf()
s = ""
Dim ta As Table, ro As Row
Dim ta1 As Table
    Set ta = Me.Tables(1)
    处理 ta, s
    s = "eq " + Replace(s, Chr(13), "")
    ta.Delete
Selection.InsertAfter s
Application.Run "insertfieldchars"
Selection.Fields.Update
End Sub
Function 处理(ta As Table, s)
    For i = ta.Rows.Count To 1 Step -1
        If ta.Rows(i).Cells(1).Tables.Count > 0 Then
            For j = 1 To ta.Rows(i).Cells(1).Tables.Count
                处理内表 ta.Rows(i).Cells(1).Tables(1)
            Next
            i = i + 1
        Else
                m = Replace(ta.Rows(i).Cells(1).Range.Text, Chr(13) & Chr(7), "")
                If s = "" Then
                    s = m
                Else
                    s = "\f(" + m + "," + s + ")"
                End If
            End If
        Next
    End Function
Function 处理内表(ta As Table)
    处理 ta, s
    ta.Select
    ta.Delete
    Selection.TypeText s
    s = ""
End Function  

Excel 如何用递归将嵌套表中数字换成分数形式?-Word-ExcelHome技术论坛 -  http://club.excelhome.net/forum.php?mod=viewthread&tid=1177443  
时间: 2024-11-08 06:11:37

递归的感悟的相关文章

LeetCode编程总结

# 1.在有序表中查找两数组指定的和,双指针法# 2.滑动窗口 : 连续子数组之和# 3.二分查找 : 顺序数组中查找特定的值 # 4.递归程序的真正的构建是从底向上的,这就是为什么递归终止条件要写在最前面# 参见 反转链表的递归程序 LeetCode206 # 5. 链表归并排序的递归过程,要好好体会一下 # 6.树型的暴力搜索(全路径搜索 .DFS )需要进行回溯 参见 LeetCode 93 # 7.利用 return 能使树型递归提早结束,类似于DFS 参见 LeetCode 37 #

Graph 感悟

感悟: 遍历图上的点先想到宽度优先搜索, 有很多模板 关于图的: 都是宽度优先遍历, 只是对遍历又稍微加了点条件----用hashMap, [ ] ? [ ] [ ], ArrayList[] ?  来存储对应的条件, 对入队的点判断是否满足该条件,进行存储. 简单图求最短路用宽度优先搜索 关于找所有的情况: 一般用深度优先搜索 有向图: 入度和边, 用什么容器, 怎么生成图, 根据什么入队, 出队后怎么遍历其他的边, 并判断入队 题意的分解:拓扑排序,BFS 5.9: 图.节点 ---.nex

第一次ACM赛后总结及感悟

2014 "嘉杰信息"杯 ACM/ICPC湖南程序设计邀请赛暨第六届湘潭程序设计比赛 赛后总结,虽然已经是大二第二学期了,这却是我的第一次真正的ACM比赛经历,大一虽然说就已经进了ACM队,感觉是打了一年酱油,有这种比赛机会也没有勇气去参加,感觉实力太菜了,到了大二感觉再不努力也许就没机会了,从上学期到现在吧,在oj上刷了差不多200多道题,相对于一些大神来说是远远还不够的,比别人大一的水平还差,至少相对我大一的水平有了一定的提升,终于鼓足勇气向老师提出参加这次ACM竞赛,也就是在这学

找工作感悟————秦卫卫(2014秋)

找工作感悟 秦卫卫 八月份仿真实验室国赛以后,我并没有开始做一些关于找工作的准备,而是在做自己感兴趣的cocos2d-x,大概花了一个星期的时间从安装平台到查资料写了一个flappybird小游戏,将近开学了才把找工作的事情摆到台面上来,于是继续看算法,在leetcode(这是一个神奇的网站,找工作上面的题一定要刷)上面刷题,开始的时候很费劲,后来逐渐找到了感觉,转眼开学了.阿里巴巴的面试大概在10天以后,但是我们还要做可恶的课程设计,而且我们组又没人做,于是我在实验室熬了3天把它做完了,于是开

对递推和递归的理解

对递推和递归的理解 1.此问题能否用递推解决 我们以斐波拉契数列问题为例进行阐述,斐波拉契数列为0.1.1.2.3.5.8.13.21.-表现斐波拉契数列为瘦柱状图的形式,如下 我们现在所要解决的问题是求取第n个位置的数值,下面我们正式开始考虑能否用递推解决这个问题(关于递推和递归的区别,将会在下文阐述): 我们考察3号位置,我们发现3号位置的值依赖于1号位置和2号位置,即在1号位置的值和2号位置的值的基础上,我们再进行一些(一个)操作就可以得到3号位置的值.在本例中,这个操作为加法运算. 我们

dfs 感悟

感悟: 1. 什么时候用排列组合问题? 看看结果有ArrayList? 所求的容器有多个结果值-且各个结果值之间只是顺序,或长度不同,但是来源(存在有显性隐性输入值)都是一样的-- 正是排列组合的根本. 数组, 字符串 2. 关键点: 递归函数里面加入容器, 结果值--操作的元素---不断地操作结果中的值, 输入值, (判断访问过没有-看是否要求重复.位置计数器). 3. 二叉树的回溯法有单独的模板 5.10 4. //元素没有重复 if (list.contains(nums[i])) { c

Java算法之递归打破及在真实项目中的使用实例

开心一笑 刚才领导问开发:"你觉得这个项目的最大风险是什么",开发说:"加班猝死" , 气氛尴尬了一分钟!!! 提出问题 1.递归算法简单复习 2.如何实现递归算法与真实项目接口??? 3.如何打破递归算法??? 解决问题 1.首先练习下网上一些递归经典题 1 package com.hwy.test; 2 3 /** 4 * 递归函数测试 5 * Created by Ay on 2016/7/2. 6 */ 7 public class RecursionTes

不是说朝闻道夕死可矣吗(如果你发现了自己的学习模式,愿意学并且能坚持,我觉得没什么能阻挡你征服软件世界的脚步),安晓辉大神的感悟

从技术支持中途转战软件开发,如今从事编程工作已十多有余,2014年CSDN博文大赛编程语言组冠军.CSDN Qt论坛的版主安晓辉老师从今天开始,坐镇CSDN社区问答栏目的 第十四期,届时会接受广大网友的提问,欢迎各位网友前来与安老师一起交流. 当Qt跨界牵手Android,移动开发会有什么不同?初学者如何借助Qt开发Android应用?安晓辉老师将携 <Qt on Android 核心编程>一书,接受网友们关于Qt on Android的相关提问,与此同时,也欢迎大家来与安老师交流程序员入行.

PHP_递归实现无限级分类

<?php /** * 递归方法实现无限级别分类 * @param array $list 要生成树形列表的数组[该数组中必须要有主键id 和 父级pid] * @param int $pid=0 父级id * @param int $level=0 缩进次数[用于指定分类名称要缩进的数量] */ function getTree($list,$pid=0,$level=0 ) { // static 表示声明一个静态变量, 静态变量在函数中会一直保存它的值 static $tree = arr