Foxtable(狐表)用户栏目专家坐堂 → 老六你的递归函数我这才搞明白


  共有9438人关注过本帖树形打印复制链接

主题:老六你的递归函数我这才搞明白

帅哥哟,离线,有人找我吗?
lpxjw_zyl
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:376 积分:4189 威望:0 精华:0 注册:2008/9/1 14:18:00
老六你的递归函数我这才搞明白  发帖心情 Post By:2012/11/13 10:40:00 [只看该作者]

老六你的递归函数我这才搞明白?

 回到顶部
帅哥哟,离线,有人找我吗?
lpxjw_zyl
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:376 积分:4189 威望:0 精华:0 注册:2008/9/1 14:18:00
  发帖心情 Post By:2012/11/13 10:41:00 [只看该作者]

花了半个小时看说明搞实践才弄清楚。


 回到顶部
帅哥哟,离线,有人找我吗?
sgs
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:365 积分:2693 威望:0 精华:1 注册:2011/11/25 7:55:00
  发帖心情 Post By:2012/11/13 10:41:00 [只看该作者]

说白了就是自身调用自身的过程

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/13 10:42:00 [只看该作者]

半小时搞清楚递归的同学,都属于优秀的。


 回到顶部
帅哥哟,离线,有人找我吗?
lpxjw_zyl
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:376 积分:4189 威望:0 精华:0 注册:2008/9/1 14:18:00
  发帖心情 Post By:2012/11/13 10:44:00 [只看该作者]

谢谢夸奖,要两边结合起来就很容易看懂,首先搞懂参数,相当于把参数作为变量在自定义函数中执行,对吗?老六。


 回到顶部
帅哥哟,离线,有人找我吗?
lpxjw_zyl
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:376 积分:4189 威望:0 精华:0 注册:2008/9/1 14:18:00
  发帖心情 Post By:2012/11/13 11:16:00 [只看该作者]

Dim dt As DataTable =DataTables("中招录取Ⅰ")
Dim drs As List(Of DataRow) = DataTables("中招录取Ⅰ").Select("", "总分 DESC")
Functions.Execute("排名",dt,drs)

内部函数名为排名

Dim dt As DataTable = Args(0)
Dim drs As List(Of DataRow) = Args(1)
For n As Integer = 0 To drs.Count - 1 '遍历所有行
    If n > 0 AndAlso drs(n)("总分") = drs(n-1)("总分") Then '如果总分和上一行相同
        drs(n)("总分排名") = drs(n-1)("总分排名") '则排名等于上一行
    Else
        drs(n)("总分排名") = n + 1 '设置排名
    End If
Next

 

老六你说这样我理解是对的吗?


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/13 11:43:00 [只看该作者]

 关键要看楼主要实现的是什么了。加粗的代码,好像有点累赘。

Dim dt As DataTable =DataTables("中招录取Ⅰ")
Dim drs As List(Of DataRow) = DataTables("中招录取Ⅰ").Select("", "总分 DESC")
Functions.Execute("排名",dt,drs)

内部函数名为排名

Dim dt As DataTable = Args(0)
Dim drs As List(Of DataRow) = Args(1)

For n As Integer = 0 To drs.Count - 1 '遍历所有行
    If n > 0 AndAlso drs(n)("总分") = drs(n-1)("总分") Then '如果总分和上一行相同
        drs(n)("总分排名") = drs(n-1)("总分排名") '则排名等于上一行
    Else
        drs(n)("总分排名") = n + 1 '设置排名
    End If
Next



 回到顶部