[关闭]
@DingCao-HJJ 2015-08-29T15:38:35.000000Z 字数 505 阅读 1200

函数编程中的递归思想

编程思想


参考资料传送门
递归_百度百科
递归_维基百科

堆_百度百科
堆 (数据结构)_维基百科

c语言中的函数式编程,允许一个函数里面调用一个或多个函数, 例如:

  1. void Bfun(int x) {
  2. printf("%d\n", x);
  3. }
  4. void Afun() {
  5. Bfun(3);
  6. printf("aaa");
  7. }

在上面的代码中Afun()调用Bfun(),必须要等Bfun()的所有语句都执行完了,才会执行Afun()中剩下的语句,所以结果是如下:

  1. 3
  2. aaa

而一个函数不仅可以调用别的函数,同时也可以调用自身(这个时候被调用函数参数一般和调用函数的参数不同),这种函数调用自身的编程思想我们就叫做递归。

举个例子:

  1. void fun(int x) {
  2. if (x == 0) return;
  3. fun(x - 1);
  4. printf("%d\n", x);
  5. }

如果其他函数调用fun时最初传入的参数为5,那么程序将如下执行:

fun(2)内部:
  x为2,非零,跳出判断;
  执行fun(1) (fun(1)内部) {
    x为1,非零,跳出判断;
    执行fun(0) (fun(0)内部) {
      x为零,返回;
    }
    打印x值,为1;
  }
  打印x值,为2;
}

希望大家对递归能有一个简洁明了的理解!

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注