用递归打出有N个元素的集合的全部子集

lijunfeng 2003-10-15 09:56:19
用递归打出有N个元素的集合的全部子集
如:E={a,b,c}
打出:{},{a},{b},{c},{a,b},{b,c},{a,b,c}

要用递归做,大家帮个忙
...全文
48 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenen 2003-10-18
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2332/2332312.xml?temp=.1893122
qiqunet 2003-10-18
  • 打赏
  • 举报
回复
Dim combo() As String, maxnum As Integer

Private Sub Form_Click()
aa 6, "{a,b,c,d,e,f}" '总的执行函数(传入值)
End Sub

Sub aa(n As Integer, string1 As String)
ReDim combo(n - 1)
For i = 2 To Len(string1) '分解出各个元素
tempstr = Mid(string1, i, 1)
If tempstr = "}" Then Exit For
If tempstr <> "," Then
combo(j) = combo(j) & tempstr
Else
j = j + 1
End If
Next
maxnum = n - 1

Do While maxnum >= 0
bb n - 1 '调用递归函数
maxnum = maxnum - 1
Loop

Print "ok"
End Sub

Function bb(n As Integer) As String '递归函数
If n < maxnum Then Exit Function
bb = bb(n - 1) & "," & combo(n)
Print "{" & Mid(bb, 2, Len(bb) - 1) & "}"
End Function
shenen 2003-10-17
  • 打赏
  • 举报
回复
up
qiqunet 2003-10-17
  • 打赏
  • 举报
回复
我用的是VB5, 如果是VB6的话用split()函数来分解单个元素就简单多了, 呵呵
qiqunet 2003-10-17
  • 打赏
  • 举报
回复
Dim combo() As String

Private Sub Form_Click()
aa 6, "{a,b,c,d,e,f}" '总的执行函数(传入值)
End Sub

Sub aa(n As Integer, string1 As String)
ReDim combo(n - 1)
For i = 2 To Len(string1) '分解出各个元素
tempstr = Mid(string1, i, 1)
If tempstr = "}" Then Exit For
If tempstr <> "," Then
combo(j) = combo(j) & tempstr
Else
j = j + 1
End If
Next

For i = 1 To n - 1
Print combo(i) '打印单个元素
Next

bb n - 1 '调用递归函数
Print "ok"
End Sub

Function bb(n As Integer) As String '递归函数
If n < 0 Then Exit Function
bb = bb(n - 1) & combo(n)
Print bb
End Function
lijunfeng 2003-10-17
  • 打赏
  • 举报
回复
分数可不少呀。
lijunfeng 2003-10-17
  • 打赏
  • 举报
回复
没人回答就算了。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧