程式化的递归函数
来源:互联网 发布:风云同步卧底软件 编辑:程序博客网 时间:2024/05/16 01:37
程式化的递归函数有2个特点:
1.有函数参数,利用参数作为终止条件。
2.有返回值,在return语句里写递推公式。
正确写出如何快速正确的写出递归函数?写一个递归函数是非常程式化的东西,只要按照一定的规则来写,就可以很容易地写出递归函数。写递归函数有三步:
①写出迭代公式;
②确定递归终止条件;
③将①②翻译成代码。
下面举一个例子,希望能帮助大家体会这一原则
写一个函数,求:f(n)=1+2+3+……+n的值
①写出迭代公式:迭代公式为
②确定递归终止条件:f(1)=1就是递归终止条件
③将①②翻译成代码:将迭代公式等号右边的式子写入return语句中,即return (Sum(n-1))+n;
将1!=1翻译成判断语句:if(n==1) return 1;
按照先测试,后递归的原则写出代码。
longSum(intn)
{
if
(n==1)
return1;
return
(Sum(n-1))+n;
}
阶乘的递归函数,公式如下:n!=n*(n-1)*(n-2)....*2*1
//C++
int
Factorial(
int
n)
{
if
(n==0||n==1)
return
1;
else
return
n * Factorial(n-1)
}
总结:
写递归函数关键只有两点:
1、递推公式。它是有固定模板的的一个公式:f(n)=f(n-1)+n.把f换成递归函数的函数名即可。如前面例子中的
Sum(n)=(Sum(n-1))+n,Factorial(n)=n * Factorial(n-1)。
2.递推公式要写在return语句里。
因为如果你比较了解递归函数,就会知道递归函数的执行过程,是一个递归下降,遇到终止条件后,递归上升的过程。
在递归下降过程中,执行的是包括return在内的前面的语句,但执行return语句实际上并没有返回结果。
遇到终止条件执行第一次返回结果
在递归上升的过程中,执行的是return语句。
所以如果递推公式不写在return语句里,就无法递归。
3.终止条件的判断语句要写在递推公式的前面。
即不能写成
longSum(intn)
{
if(n!=1)
return(Sum(n-1))+n;
else
return1;
}
0 0
- 程式化的递归函数
- 程式化交易,保持获利的一致性
- 递归函数的理解
- 递归函数的学习
- 函数的递归调用
- 函数的递归
- 递归函数的原理
- 递归函数的应用
- 递归函数的应用
- 递归函数的应用
- 函数的递归
- 函数的递归调用
- 函数的递归好比...
- 递归的函数
- 递归的函数
- C + +的递归函数
- 递归的函数
- 函数的递归
- hdu 1867 A + B for you again
- 关于MySQL随想(一)
- phpexcel 读取中文gbk数据的csv在linux服务器下乱码的解决方法.
- 元素浮动之后文字会环绕而不是重合原因示例解答
- 130. Surrounded Regions
- 程式化的递归函数
- 换个视角!那么用户到底想要怎么样的产品?
- ios afnetworking怎么用post请求追加参数
- ServletContext作用功能详解
- 面向切面(AOP)之Spring接口方式 schema配置方式 aspectj注解方式
- 151. Reverse Words in a String
- [Unity3d]打包Assetbundle并加载
- Go语言核心之美 2.6-常量
- 通过resize事件,判断当前浏览设备