回 帖 发 新 帖 刷新版面

主题:递归的理解问题!

各位对递归问题有什么好的理解方法吗?
自己看了半天头都大了。。。。。
[em10]
请大侠赐教!

回复列表 (共5个回复)

沙发

让我来具体一下,下面这个递归怎么理解?
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]);
  }
   
}

板凳

我自己先讲一下理解:
就上面的例子,我认为应该现从整体考虑,如果满足条件就进行递归调用,如果多次递归,就会向一颗树一样,不断延伸。
我现在只能理解到表面,深入的理解还请指教!

3 楼

像上面那样的代码,不结合具体的题目很难分析下去。

学习递归还是要从简单入手,比如汉诺塔、八皇后、深度优先搜索,一步一步来

4 楼

递归还是从最简单的求阶乘,求n次方开始分析,这样容易理解,理解透彻了在看这类问题就容易多了

5 楼


递归类似与高中数学中的“数学归纳法”

我来回复

您尚未登录,请登录后再回复。点此登录或注册