黑马程序员技术交流社区

标题: 递归问题 [打印本页]

作者: 沙子    时间: 2014-12-13 22:57
标题: 递归问题
递归到底怎么理解?是自己调用自己后再返回给自己?有点乱了啊。有没有详解?
作者: quick3g    时间: 2014-12-14 00:04
递归是把复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解的算法。
比如这个求和函数:
        int sum=0;
        int fun(int i){
             if(i==0)return sum;//结束递归的条件
             sum+=i;
             return fun(--i);
        }
作者: 魏文杰    时间: 2014-12-14 00:47
递归调用
         在过程(方法)中调用过程自己本身
         就像讲老和尚和小和尚的故事(从前有座山,山上有坐庙,庙里有个老和尚......)
          比如:f(n)=n+f(n-1)
         一定要写结束条件,容易造成栈溢出

作者: 找寻小龙猫    时间: 2014-12-14 01:30
有一个童话故事,是老鼠要毁灭人类,老鼠王就派一个老鼠去看看人类的弱点,它去了图书馆,听到人没了知识,就活不下去了。老鼠王就下令咬书…但是人依旧活着,就在去派老鼠打探……都不行…直到,一只老鼠探来说,只要把地球的地心破坏,人类就完蛋了。老鼠王就下令,打洞找地心,一直到现在还是再打洞……递归就像老鼠打洞,打洞,……因为没有找到地心所以一直打…
作者: Eagle    时间: 2014-12-14 03:46
直接代码:
  1. public void demo(int x){
  2.     if(x!=0)
  3.           demo(x--);
  4. }
复制代码

能看懂吗????挺不复杂的,呵呵
作者: kenhe    时间: 2014-12-14 09:42
说得简单点就是函数自身调用自身,当然函数内部要设置结束条件,否则会死循环
作者: 提米特    时间: 2014-12-14 09:55
就是类似于一个循环。自己调用自己,自己调用自己,一直到问题简化到原点,然后就逆推回来问题就解决了。
作者: 时间都去哪了    时间: 2014-12-14 12:45
比如求f(n)?假设f(n)满足表达式f(n)=f(n-1)+2;那么可以通过先求f(n-1),又f(n-1)=f(n-2)+2;所以又要求f(n-2).....就这样,反复调用就可以递归求出最后的结果




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2