回 帖 发 新 帖 刷新版面

主题:请求帮助!

数据结构与算法中的递归调用究竟是 怎么回事啊 ?
哪位大哥能具体解答一下呢 ?
从网上查,查到的都是我会的 ,不会的还是 查不到.
我要的是 对一个问题,我如何去入手,如何去判断它应该用递归调用?
递归调用用到栈,那栈中具体放的是 什么?里面的 内容又是什么时候放进去的 ?

希望哪位大哥能教教我渗透理解递归调用的方法.注重的 是 方法/
  

谢谢!

回复列表 (共1个回复)

沙发

会单步调试吗?F9-设置断点;F5-单步运行到断点;Shift+F5退出单步运行;F10-逐句运行,F11-进入函数体运行。
自己调试下,栈的结构很明了。

递归算法通常难以理解,通常的做法是:

先写一般化的公式;(难)
最后写结束条件。

举个例子:1到n的求和 Func(n)

1.问题:
n + (n-1) + (n-2) +  ...  + 1

2 分析:
把 “(n-1)到1” 看成1个整体,就是求 Func(n-1);

那么,就是说Func(n) = n + Func(n-1);

这就是一般化公式。

3.退出条件:

 Fun(n) 在n=1时 为1; 停止递归。

/******代码如下******/
/*
*1到n的求和
*/
int Func(int n)
{
  if( n == 1 )           // -----second
     return 1;
  return n + Func(n-1);  // -----First
}

我来回复

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