在说递归之前,我给大家说一个小故事,故事就是在说递归之前,我给大家说一个小故事,故事就是在说递归之前。我给大家说一个小故事,故事就是在说递归之前,我给大家说一个小故事,故事就是在说递归之前我给大家说一个小故事......
这个故事的名字就叫做递归。。。哈哈。
故事尽管有点扯淡,但它却非常好的解释神马叫做递归。
递归的正式定义:
在数学和计算机科学中。递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其它全部情况都能被还原为其基本情况。
比如,下列为某人祖先的递归定义:
某人的双亲是他的祖先(基本情况)。
某人祖先的双亲相同是某人的祖先(递归步骤)
很多其它的定义请自行百度~~~,下面我说下我对于递归的体会:
1,递归说白了就是自己调用自己
2,能用其它方法解决的问题,就尽量不要使用递归(可能不对。仅仅是我的个人体会),耗用内存较大,尤其在 Java中尽量避免使用。
3,递归的调用是基于栈的
4,解决某个问题时,将其分割成n份。先运行1的操作。再进行n-1的操作,以此类推下去。
递归有几个经典的算法。这里给列出下面:
===============================切割线~~=============================================
案例1: 反转字符串
这里我用两种方式实现了。均採用递归方式。
1。源代码:
// 递归.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <stdlib.h> void reverse_str(char * str) { if((NULL != str) &&(*str != '