好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

lucasfeng 迭代的是人,递归的是神

lucasfeng 迭代的是人,递归的是神

lucasfeng

 

迭代的是人,递归的是神(一)

把递归调用展开,是分析递归调用的利器!

一、递归调用的一般结构。

递归函数一般有如下特征:

recursionFun()

{

     //第一部分:递归结束条件,前期处理。

     if 递归结束条件

         return;

     //第二部分:递归调用。

     recusionFun();

     //第三部分:递归调用后期处理,也可能有return语句。

}

二、递归调用的4种形式。

下面看递归调用的4种形式:

1、

 void  recursionFun( int  n)
{
	 if  (n == 0)
	{
		 return ;
	}

	cout << n;

	recursionFun(n - 1);
}

recursionFun(3)输出321.

2、

 void  recursionFun( int  n)
{
	 if  (n == 0)
	{
		 return ;
	}

	recursionFun(n - 1);
        cout << n; 
}
 
recursionFun(3)输出123.

3、

 void  recursionFun( int  n)
{
	 if  (n == 0)
	{
		 return ;
	}

	cout << n;

	recursionFun(n - 1);

	cout << n;
}
 
recursionFun(3)输出321123.

4、

 int  recursionFun( int  n)
{
	 if  (n == 1)
	{
		 return  1;
	}
	 int  sum = 0;

	sum = n + recursion(n - 1);

	 return  sum;
}
 
recursionFun(3)输出6.


 

二、第1种形式的分析。

这里为了简便以recursionFun(2)为例。

 void  recursionFun( int  n)
{
	 if  (n == 0)
	{
		 return ;
	}

	cout << n;

	recursionFun(n - 1);
}

记住,把递归调用展开分析!如下图。

    

三、第2种形式的分析。

 void  recursionFun( int  n)
{
	 if  (n == 0)
	{
		 return ;
	}

	recursionFun(n - 1);

        cout << n; 
}

 

四、第3种形式的分析。

 void  recursionFun( int  n)
{
	 if  (n == 0)
	{
		 return ;
	}

	cout << n;

	recursionFun(n - 1);

	cout << n;
}

五、第4种形式的分析。

 int  recursionFun( int  n)
{
	 if  (n == 1)
	{
		 return  1;
	}
	 int  sum = 0;

	sum = n + recursion(n - 1);

	 return  sum;
}

 

 

分类:  C语言

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于lucasfeng 迭代的是人,递归的是神的详细内容...

  阅读:46次