展开全部
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
扩展资料:
递归的应用
1、数据的定义是按递归定义的。(Fibonacci函数)
2、问题解法按递归算法实现。这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单,如Hanoi问题。
3、数据的结构形式是按递归定义的。
递归的缺点
递归算法解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。
参考资料来源:百度百科-递归
展开全部
要理解递归,首先你要理解递归
简单来说就是一个函数调用到了自己,就可以称为递归.下面是简单的求n!的例子:
#include<stdio.h>
#include<string.h>
int fac(int n)
{
if(n==0)return 1;
return n*fac(n-1);
}
void main()
{
printf("%d\n",fac(6));
}
简单来说就是一个函数调用到了自己,就可以称为递归.下面是简单的求n!的例子:
#include<stdio.h>
#include<string.h>
int fac(int n)
{
if(n==0)return 1;
return n*fac(n-1);
}
void main()
{
printf("%d\n",fac(6));
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在函数调用中,如果直接或间接地调用该函数本身,称为递归调用.递归调用有时也称为循环定义.
例子:计算 n! (可表示为: n!=n(n-1)!)
#include<stdio.h>
main()
{
long int fac(int n); /*函数声明*/
long int s;
int i;
scanf("%d",&i);
s=fac(i);
printf("%2d!=%1d\n",i,s);
}
long int fac(int n)
{
long int fa;
if(n==0)
fa=1;
else
fa=n*fac(n-1); / *采用了递归算法*/
return fa;
}
例子:计算 n! (可表示为: n!=n(n-1)!)
#include<stdio.h>
main()
{
long int fac(int n); /*函数声明*/
long int s;
int i;
scanf("%d",&i);
s=fac(i);
printf("%2d!=%1d\n",i,s);
}
long int fac(int n)
{
long int fa;
if(n==0)
fa=1;
else
fa=n*fac(n-1); / *采用了递归算法*/
return fa;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
也就是一个函数的中再调用该函数,也就是说是循环的递归调用,但必须得有一个判断结束的条件,否则都成了死循环!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询