作者billy20510 ( *~鸭子~*)
看板Programming
标题[问题]用递回写一个PowerSet,求解释
时间Wed Oct 15 20:49:06 2014
#include <iostream.h>
char buf[3]={'a','b','c'}, ans[4];
int total_len=3;
void Powerset(int i, int j)
{
if (j==total_len) {
ans[i]=0;
cout<<'{'<<ans<<'}'<<endl;
}
else {
Powerset(i,j+1);
ans[i]=buf[j];
Powerset(i+1,j+1);
}
}
void main()
{
Powerset(0,0);
}
上面是我在网路上找到的范例
看我看了好久还是无法看出他所要表达的意思
是否有高手可以帮我解释一下
出处:
http://www.programmer-club.com.tw/ShowSameTitleN/c/4166.html
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.233.78.242
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Programming/M.1413377349.A.0A4.html
1F:→ MOONRAKER: 用看的怎麽可能看出来。不要看就懂了。 122.116.43.189 10/15 21:36
2F:→ alibuda174: 根据powerset定义 buf里的元素都有两 36.226.147.151 10/15 22:18
3F:→ alibuda174: 种选择 1.放入ans 2.不放入 36.226.147.151 10/15 22:18
4F:→ alibuda174: Powerset(i,j)的i给ans用 代表放入几 36.226.147.151 10/15 22:20
5F:→ alibuda174: 个 j给buf用 指向某元素 36.226.147.151 10/15 22:20
6F:→ alibuda174: 所以当呼叫Powerset(i,j)时 需要两个 36.226.147.151 10/15 22:20
7F:→ alibuda174: 递回呼叫 1.不放入当前元素 继续往下 36.226.147.151 10/15 22:21
8F:→ alibuda174: 也就是Powerset(i,j+1) 36.226.147.151 10/15 22:21
9F:→ alibuda174: 2.放入当前元素 继续往下 也就是 36.226.147.151 10/15 22:21
10F:→ alibuda174: ans[i]=buf[j];与Powerset(i+1,j+1); 36.226.147.151 10/15 22:22
11F:→ billy20510: 我似乎有点了解了!! 36.233.78.242 10/16 16:20