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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 成都—陈超 中级黑马   /  2013-6-18 14:29  /  1406 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 成都—陈超 于 2013-6-18 21:23 编辑

递归的关键思想是什么 ? 在什么情况下使用?请附例子!谢谢。。。我是新手
今天看书的时候看到树上构建二叉树,用递归插入左树右树  一直没怎么弄懂方法是怎么调用的   请附一个简单的例子

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

3 个回复

倒序浏览
参考下列的例子。递归犹如多吗若骨牌一样,一个函数套一个函数,函数调用自己本身,直到遇到特殊值。至于什么二叉树的,我照下面的例子说说看,根结点就是Foo(30),调用出两个F00(29)+Foo(28)。分别是左右树,Foo(29)又调用Foo(28)+Foo(27),又有两个左右树。这样一直调用,直到为0 或者1、2。
一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。 //前两个数想加等于第三个数
答:public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if( i <= 2)
return 1;
else
return Foo(i -1) + Foo(i - 2);
}
}

点评

很清晰的思路 看有有点懂了 我想还是需要多练练  发表于 2013-6-18 21:24

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报 1 0
其实 递归如果能找准出口 就很好写了,举一个 简单的例子,求N的阶乘。
class jiechen
{
//计算每个数的阶乘,递归函数
static double f(int n)
{

  if (n<0) return -1;
  if (n == 1||n==0)
       return 1;
else
     return n*f(n - 1);
    }
}
前两个if就是出口,找到就很好写了。
找个OJ上练习点  动态规划  的题目,理解递归就更容易了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马