主题:递归的理解问题!
118sgy
[专家分:180] 发布于 2007-05-20 21:44:00
各位对递归问题有什么好的理解方法吗?
自己看了半天头都大了。。。。。
[em10]
请大侠赐教!
回复列表 (共5个回复)
沙发
118sgy [专家分:180] 发布于 2007-05-20 21:56:00
让我来具体一下,下面这个递归怎么理解?
void SumOfSub(float s,int k,float r)
{
x[k]=1;
if(s+w[k]==m)
{
for(int j=0;j<=k;j++) cout<<x[j]<<' ';
cout<<endl;
}
else if(s+w[k]+w[k+1]<=m)
SumOfSub(s+w[k],k+1,r-w[k]);
if((s+r-w[k]>=m)&&(s+w[k+1]<=m))
{ x[k]=0;
SumOfSub(s,k+1,r-w[k]);
}
}
板凳
118sgy [专家分:180] 发布于 2007-05-20 22:11:00
我自己先讲一下理解:
就上面的例子,我认为应该现从整体考虑,如果满足条件就进行递归调用,如果多次递归,就会向一颗树一样,不断延伸。
我现在只能理解到表面,深入的理解还请指教!
3 楼
argentmoon [专家分:13260] 发布于 2007-05-20 23:55:00
像上面那样的代码,不结合具体的题目很难分析下去。
学习递归还是要从简单入手,比如汉诺塔、八皇后、深度优先搜索,一步一步来
4 楼
zhouzhouboa [专家分:150] 发布于 2007-05-23 17:13:00
递归还是从最简单的求阶乘,求n次方开始分析,这样容易理解,理解透彻了在看这类问题就容易多了
5 楼
昨天还很帅 [专家分:50] 发布于 2007-05-25 11:24:00
递归类似与高中数学中的“数学归纳法”
我来回复