| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 878 人关注过本帖
标题:递归调用求阶乘,请帮我看错在哪
取消只看楼主 加入收藏
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:3 
递归调用求阶乘,请帮我看错在哪
Public Sub km(N As Integer)
 Dim m As Integer
  If N > 1 Then
    m = N * km(N - 1)
 Else
    km(1) = 1
 End If
Print shr$(N) & "的阶乘是:" & Str$(m)
End Sub
Private Sub Form_Load()
Dim num As Integer
num = InputBox("enter a number from 0 to 20 or -1 to end:")
If num > 0 And num <= 20 Then
  km num
End If
End Sub
搜索更多相关主题的帖子: number 
2011-04-06 19:43
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
收藏
得分:0 
以下是引用风吹过b在2011-4-6 21:05:57的发言:

'N!   
 'Print N_jx(6)
  
'递归方式
 Public Function N_jx(cs As Long) As Double
 if cs<1 then  
   exit function
 end if
 If cs = 1 Then
     N_jx = 1          '这里是返回值,左边不能用再带括号。带括号是引用。
 Else
     N_jx = cs * N_jx(cs - 1)
 End If
 End Function
'----上面是我前面回贴子时写的,下面是用你的改的--------
'我函数名与你的不同,这个无所谓,参数类型不同,我改你的定义。
Private Sub Form_Load()    '在这个事件中使用 PRINT 方法,就必须设置 自动重绘为 真,否则看不到结果。
 Dim num As string
dim num1 as long  
 num = InputBox("enter a number from 0 to 20 or -1 to end:")
if isnumber(num) then  '判断输入是否为数字
   num1=clng(num)       '转化为长整数
 If num1 > 0 And num1 <= 20 Then        '判断范围
   print num1 ; " 的阶乘是:" ; N_jx(num1)         '如果使用 print 进行输出的话,建议使用分隔符进行连接各个输出内容,已节省系统开销。
 else   '不在范围提示
   print "输入的数据不在 0 - 20 这间。"
 end if
else    '不是数字时提示
   print "输入的不是数值"
end if
 End Sub
不能定义一个Sub通用过程吗,我定义的是Sub过程不是Function过程,我想定义一个Sub通用过程递归调用后直接在Sub通用过程中用Print输出结果

qq7434391
2011-04-06 22:14
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
收藏
得分:0 
以下是引用风吹过b在2011-4-6 22:52:38的发言:

我定义的是Sub过程不是Function过程,我想定义一个Sub通用过程递归调用后直接在Sub通用过程中用Print输出结果  
 
不能。
 
因为 SUB 过程没有返回值,也就没办法递归调用。
 
如果你要定义为 SUB ,那就要使用 循环写。
 
Public Sub km(N As Integer)
 Dim m As Double  
dim i as long
m=1
for i=1 to N
   m=m*i
next i
 
 Print shr$(N) & "的阶乘是:" & Str$(m)
 End Sub
因为 SUB 过程没有返回值,也就没办法递归调用。
不是吧

qq7434391
2011-04-07 00:13
liangwenbc
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
帖 子:168
专家分:174
注 册:2008-6-11
收藏
得分:0 
sub过程到最后当N=1时不能返回一个值是吧,懂了。谢谢大家

qq7434391
2011-04-07 00:26
快速回复:递归调用求阶乘,请帮我看错在哪
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031262 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved