游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8107|回复: 22

关于递归的问题

[复制链接]

6

主题

103

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2006-9-7 21:21:00 | 显示全部楼层 |阅读模式
今天在看C语言 看到递归了 听说VB也支持递归 我看的教材是2级VB教材 比较简单没有介绍VB的递归问题 编写了个代码测试一下
从1加到100

Private Sub Form_Click()
Print fun_a(100)
End Sub

Function fun_a(a As Integer) As Integer
Dim c As Integer
If a = 1 Then
   fun_a = 1
Else
   fun_a = fun_a(a - 1) + a
End If
End Function

最后得出5050看来是真支持递归 不过听说递归速度不高在游戏中应该不会用吧
还有递归这个问题一直搞不明白 就那个汉诺塔问题到现在还在迷模中

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2006-9-7 21:30:00 | 显示全部楼层

Re: 关于递归的问题

杜飞: 关于递归的问题

今天在看C语言 看到递归了 听说VB也支持递归 我看的教材是2级VB教材 比较简单没有介绍VB的递归问题 编写了个代码测试一下

递归是编程里的比较基本的东西,当然没有必要在VB教材里特地讲到啊

61

主题

1429

帖子

1430

积分

金牌会员

Rank: 6Rank: 6

积分
1430
发表于 2006-9-7 21:31:00 | 显示全部楼层

Re: Re: 关于递归的问题

psic: Re: 关于递归的问题


递归是编程里的比较基本的东西,当然没有必要在VB教材里特地讲到啊



素闻陈总才高八斗,琴棋书画,样样精通,我有一个参谋将军(丁三石)想跟你切磋!
   猪君 :我们陈总怎么可以以大欺小呢?
   陈癫才:是呀,是呀!
   丁三石:文学切磋是不分辈份的!
   屎与猪:就是嘛,玩玩而已!不过如果你对不出来,别怪我要放牛了!丁参谋,出对!
   丁三石:一步两卡三掉线,狗城四魔五兽六黑,贤大训出七八九流,十分无聊!
   屎与猪:对呀,怎么不对呢,你不给我面子,我可真的放牛咯!
   猪君 :让我来试试!
   猪君 :十文九吹八枪手,争吐七蒙六拐五骗,屎总笑脸三刀两面,一个汉奸!
   屎与猪:好工整啊!
   陈癫才:阿猪,你对得太好了啊!
   猪君 :没事没事,没事!--!
   屎与猪:嗯!?(好象少点什么?)

   丁三石:在下是中华网游文状元兼亲日部参谋将军,绰号“亲日舔鞋者“的日穿肠,阁下是?
   猪君 :小弟混过两年游戏论坛,到如今混了个清贫小班猪,猪君是也!
   猪君 :好,我就来会一会你!
   (两人对立许久,相互呕吐,众人腥倒。
   猪君:对不起,我俩惺惺相惜,情不自禁。
   丁三石:言归正传,我们开始了!
   丁三石:网游里,人不贪钱不沾,小白班猪真是笨蛋!
   猪君 :论坛上,语无禁吐无尽,亲日将军无凝傻逼!
   众人 :好好,对得好!
   丁三石:蒙蒙骗骗吹吹捧捧欺欺诈诈争钱争钱!
   猪君 :唧唧歪歪嘻嘻哈哈婆婆妈妈呕吐呕吐!
   众人 :阿猪真行呀,阿猪好棒啊!
   屎玉柱:快出对,对死他,对死他!
   丁三石:十口齐吹,吹牛吹水吹在线!
   猪君 :八目共赏,赏文赏评赏胃酸!
   众人 :好,好--
   丁三石:我堂堂参谋将军会输给你个小小班猪?
   丁三石:吾发工资搞革命!
   猪君 :我请傻逼去领钱!
  
丁三石:百年争吐美名洋!
   猪君 :万年遗臭一坨屎!
   丁三石:啊?
   丁将军后退数步,口吐鲜屎
   猪君 :对对儿本为消遣作乐,今日丁兄竟然对出几十斤屎,可谓空前绝后,小弟佩服佩服!
   陈癫才扑上前:阿猪,你真是我的偶像!

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2006-9-7 21:35:00 | 显示全部楼层

Re: 关于递归的问题

杜飞: 关于递归的问题

不过听说递归速度不高在游戏中应该不会用吧

递归在游戏中也有很多应用啊
例如平面上的碰撞检测,有种方法就是用四叉树来分区,减少检测的运算量,这时就要用到递归

6

主题

103

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2006-9-7 21:46:00 | 显示全部楼层

Re:关于递归的问题

你看看我上面的1加到100的代码对不?
再看看这个 错到哪里
Private Sub Form_Click()
Print fun_a(100)
End Sub
Function fun_a(a As Integer) As Integer
Static aa
Dim c As Integer

If a = 1 Then
   c = 1
Else

   c = fun_a(a - 1) + a
   fun_a = c
  
End If

End Function
最后得5049
少加一?

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2006-9-7 22:04:00 | 显示全部楼层

Re: Re:关于递归的问题

杜飞: Re:关于递归的问题

你看看我上面的1加到100的代码对不?
再看看这个 错到哪里
Private Sub Form_Click()
Print fun_a(100)
...


第二个我不明白那个C是干什么的,完全没有必要啊

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2006-9-7 22:09:00 | 显示全部楼层

Re: 关于递归的问题

另外1也有点小小的问题
输入小于等于0的话就会死循环
这样就不会了

Function fun_aaa(a As Integer) As Integer

If a > 0 Then
   fun_a = fun_a + a + fun_a(a - 1)
End If

End Function

6

主题

103

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2006-9-7 22:20:00 | 显示全部楼层

Re: Re: 关于递归的问题

psic: Re: 关于递归的问题

另外1也有点小小的问题
输入小于等于0的话就会死循环
这样就不会了

Function fun_aaa(a As Integer) A...

6

主题

103

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2006-9-7 22:22:00 | 显示全部楼层

Re:关于递归的问题

你这个代码没有退出递归的条件 也是死循环呀

6

主题

103

帖子

103

积分

注册会员

Rank: 2

积分
103
 楼主| 发表于 2006-9-7 22:27:00 | 显示全部楼层

Re:关于递归的问题

我知道那个C没有必要 可惜我想加上试一下 可惜加了后运算结果就不对了
想知道什么原因造成的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 08:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表