A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沙子 中级黑马   /  2014-12-13 22:57  /  1344 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

递归到底怎么理解?是自己调用自己后再返回给自己?有点乱了啊。有没有详解?

7 个回复

倒序浏览
递归是把复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解的算法。
比如这个求和函数:
        int sum=0;
        int fun(int i){
             if(i==0)return sum;//结束递归的条件
             sum+=i;
             return fun(--i);
        }
回复 使用道具 举报
递归调用
         在过程(方法)中调用过程自己本身
         就像讲老和尚和小和尚的故事(从前有座山,山上有坐庙,庙里有个老和尚......)
          比如:f(n)=n+f(n-1)
         一定要写结束条件,容易造成栈溢出
回复 使用道具 举报
找寻小龙猫 来自手机 中级黑马 2014-12-14 01:30:39
板凳
有一个童话故事,是老鼠要毁灭人类,老鼠王就派一个老鼠去看看人类的弱点,它去了图书馆,听到人没了知识,就活不下去了。老鼠王就下令咬书…但是人依旧活着,就在去派老鼠打探……都不行…直到,一只老鼠探来说,只要把地球的地心破坏,人类就完蛋了。老鼠王就下令,打洞找地心,一直到现在还是再打洞……递归就像老鼠打洞,打洞,……因为没有找到地心所以一直打…
回复 使用道具 举报
直接代码:
  1. public void demo(int x){
  2.     if(x!=0)
  3.           demo(x--);
  4. }
复制代码

能看懂吗????挺不复杂的,呵呵
回复 使用道具 举报
说得简单点就是函数自身调用自身,当然函数内部要设置结束条件,否则会死循环
回复 使用道具 举报
就是类似于一个循环。自己调用自己,自己调用自己,一直到问题简化到原点,然后就逆推回来问题就解决了。
回复 使用道具 举报
比如求f(n)?假设f(n)满足表达式f(n)=f(n-1)+2;那么可以通过先求f(n-1),又f(n-1)=f(n-2)+2;所以又要求f(n-2).....就这样,反复调用就可以递归求出最后的结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马