C语言什么是递归

Python017

C语言什么是递归,第1张

递归方法的概念

类方法成员间允许相互调用,也可以自己调用自己。类的方法如果在方法体内直接或间接地自己调用自己就称为递归方法。

递归基本思想就是“自己调用自己”。递归方法实际上体现了“依此类推”、“用同样的步骤重复”这样的思想,它可以用简单的程序来解决某些复杂的计算问题。

递归调用在完成阶乘运算、级数运算、幂指数运算等方面特别有效。

在执行递归操作时,C#语言把递归过程中的信息保存在堆栈中。如果无限循环地递归,或者递归次数太多,则产生“堆栈溢出”错误

例:用递归方法求阶乘。利用的数学公式为n!=n*(n-1)!。当n=0时,n!=1。

代码如下:

public long F(int n)

{

if (n==1)

return 1

else

return n*F(n-1)

}

所谓递归,说的简单点,就是函数自己调用自己,然后在某个特定条件下。结束这种自我调用。

如果不给予这个结束条件,就成了无限死循环了。这样这个递归也就毫无意义了。

如下面问题

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个数了。

何时考虑使用递归。

当你分析一个问题的时候,发现这个问题,是一个自我循环时,而且这个自我循环到一个给定值,就可以终止的时候,你就快要考虑递归了。

简单来说就是一个函数调用到了自己,就可以称为递归.下面是简单的求n!的例子:

#include<stdio.h>

#include<string.h>

int fac(int n)

{

if(n==0)return 1

return n*fac(n-1)

}

void main()

{

printf("%d\n",fac(6))

}