十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
所谓递归,说的简单点,就是函数自己调用自己,然后在某个特定条件下。结束这种自我调用。
创新互联网站建设服务商,为中小企业提供成都网站设计、做网站服务,网站设计,网站运营等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联。
如果不给予这个结束条件,就成了无限死循环了。这样这个递归也就毫无意义了。
如下面问题
1 1 2 3 5 8 13 21 ........n
分析可以看出, i 表示第几个数, n 表示该数的值
当i = 1 时, n = 1;
当i = 2 时, n = 1;
当i = 3 时 n = i1 + i2;
当i = 4 时 n = i2 + i3
所以可以写个函数
int fun(int n) // 这里的n代表第几个数
{
if(1 == n || 2 == n) // 第一个数
{
return 1;
}
else
{
return fun(n - 1) + fun(n - 2); // 这里就是自己调用自己,形成循环自我调用。
}
}
注: 以上代码只是用来演示递归,不包含错误校验。
在实际生产过程中。该代码不够健壮。
如此,就完成了递归。你就可以求得第n个数了。
何时考虑使用递归。
当你分析一个问题的时候,发现这个问题,是一个自我循环时,而且这个自我循环到一个给定值,就可以终止的时候,你就快要考虑递归了。
int main(int argc, char *argv[])
main参数 argc 是保存命令的个数,argv 保存命令
例如 test -a -b -c
test程序启动时接受了 4个参数(默认 test也属于一个参数 ),个数保存到argc -a -b -c 保存到argv
递归。我觉得你被这个名气搞晕了而已,其实就很简单,在某个函数中再调用这个函数,就叫递归
例如
int test(int a)
{
return test(a+1); //死循环 ,不断进入test函数 a不断加1。。。。
} //你可以理解为一个for 或者while的另一种形式,反正就是循环,加判断以停止递归调用
程序调用自身的编程技巧称为递归( recursion)。
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
注意:
(1) 递归就是在过程或函数里调用自身;
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口
在C/C++中,函数可以递归调用,也可以嵌套调用。
递归调用是指自己调用自己,而嵌套调用是指两个或多个函数间相交叉互调用。递归调用时,函数自身必须更改返回(结束)条件,否则就会进入死循环,而嵌套调用就没有这样的要求,与普通函数一样,完成指定操作后正常返回即可。