什么是递归的概念?

[复制链接]
查看11 | 回复3 | 2007-9-20 10:22:01 | 显示全部楼层 |阅读模式
1至100的和这个程序需要循环求sum=sum+i(i每次自增1)。没有用到递归,1至100的和累积求值,递归调用是一个循环程序的调用sum=sum+i只是C语言的一个实现的函数语句!递归的基本概念和特点 程序调用自身的编程技巧称为递归( recursion)。 一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序往往十分简洁易懂。 一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。 注意: (1) 递归就是在过程或函数里调用自身; (2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。参考资料:无 C++本回答被提问者采纳
回复

使用道具 举报

千问 | 2007-9-20 10:22:01 | 显示全部楼层
这个是累积求值而已,如果要递归的话,需要有自调用的过程。
回复

使用道具 举报

千问 | 2007-9-20 10:22:01 | 显示全部楼层
楼上的把概念分析的很透彻,也区分了和递推或迭代的区别.你用的是迭代.我顺便说一下!(引用一下楼上的)注意: (1) 递归就是在过程或函数里调用自身; (2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。举几个例子吧!1+2+3+...100要求这个方法很多.用递归理解:假设s100表示求1~100的和,s99表示1~99的和,s(n)就是1~n的和递归表示为:s100=s99+100; s99=s98+99依次类推,s(n)=s(n-1)+n;当然不能一直加,总有个界限,就是s0=0(s1=1也行);对于楼上用的函数int sum(int value)种,就是这么理解的:阶乘一样s7=s6*7 s6=s5*6s(n)=s(n-1)*n
s(1)=1(或者s0=1)程序如下:int fac(int value) { if(value==0)return 1; else return sum(value-1)*value; } main() { int result; result=fac(10); }
回复

使用道具 举报

千问 | 2007-9-20 10:22:01 | 显示全部楼层
递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。递归算法解决问题的特点:(1) 递归就是在过程或函数里调用自身。(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。(3) 递归算法解题通常显得很简洁,但运行效率较低。所以一般不提倡用递归算法设计程序。(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行