一步一步写算法(之循环与递归)

一步一步写算法(之循环与递归)

ID:20896316

大小:51.50 KB

页数:3页

时间:2018-10-17

一步一步写算法(之循环与递归)_第1页
一步一步写算法(之循环与递归)_第2页
一步一步写算法(之循环与递归)_第3页
资源描述:

《一步一步写算法(之循环与递归)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一步一步写算法(之循环和递归)【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing@163.com】   其实编程的朋友知道,不管学什么语言,循环和递归是两个必须学习的内容。当然,如果循环还好理解一点,那么递归却没有那么简单。我们曾经对递归讳莫如深,但是我想告诉大家的是,递归其实没有那么可怕。所谓的递归就是函数自己调用自己而已,循环本质上也是一种递归。   1)求和递归函数   我们可以举一个循环的例子,前面我们说过,如果编写一个1到n的求和函数怎么写呢,你可能会这么写:1.int calculate(int m)  2.{  3.    int count 

2、= 0;  4.    if(m <0)  5.        return -1;  6.  7.    for(int index = 0; index <= m; index++)  8.        count += index;  9.      10.    return count;  11.}  intcalculate(intm){intcount=0;if(m<0)return-1;for(intindex=0;index<=m;index++)count+=index;returncount;}   上面只是一个示范。下面我们看看如果是递归应该怎么写呢?1.int

3、 calculate(int m)  2.{  3.    if(m == 0)  4.        return 0;  5.    else  6.        return calculate(m -1) + m;  7.}  intcalculate(intm){if(m==0)return0;elsereturncalculate(m-1)+m;}   大家看着两段代码有什么不同?   (1)第一段代码从0,开始计算,从0到m逐步计算;第二段代码是从10开始计算,逐步到0之后这回,这样同样可以达到计算的效果   (2)第一段代码不需要重复的压栈操作,第二段需要重复的函数操作

4、,当然这也是递归的本质   (3)第一段代码比较长,第二段代码较短   2)查找递归函数   大家可能说,这些代码有些特殊。如果是查找类的函数,有没有可能修改成递归函数呢?1.int find(int array[], int length, int value)  2.{  3.    int index = 0;  4.    if(NULL == array 

5、

6、 0 == length)  5.        return -1;  1.  2.    for(; index < length; index++)3.    {4.        if(value == array

7、[index])5.            return index;6.    }  7.  8.    return -1;9.}intfind(intarray[],intlength,intvalue){intindex=0;if(NULL==array

8、

9、0==length)return-1;for(;index

10、int array[], int length, int value)2.{  3.    if(index == length)4.        return -1;5.  6.    if(value == array[index])7.        return index;8.  9.    return _find(index + 1,  array, length, value);10.}11.  12.int find(int array[], int length, int value)13.{  14.    if(NULL == array 

11、

12、 length =

13、= 0)15.        return -1;16.  17.    return _find(0, array, length, value);18.}int_find(intindex,intarray[],intlength,intvalue){if(index==length)return-1;if(value==array[index])returnindex;return_find(index+1,array,len

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。