黑马程序员技术交流社区

标题: C语言 include的使用和递归函数 [打印本页]

作者: wangxu    时间: 2014-8-24 23:06
标题: C语言 include的使用和递归函数
源代码 -》 编译预处理  -> 编译 -> 链接 -》运行
   编译预处理执行是在编译预处理(编译之前)的时候,进行解析处理的。
   #include 是编译预处理指令

   #include作用就是拷贝文件到#include指令所在位置

    #include " "
    1、在当前文件所在的路径下查找
    2、如果上面没有找,到编译器include路径查找
    3、如果编译器include路径下没有找到,系统的include路径下查找
    4、如果上面三个都没有找到就报错了。
    #include <>
    1、编译器的include路径下查找
    2、如果没有找到就系统include路径下查找
    3、如果都没有找到就报错

    当包含我们自己写的文件就是使用 #include ""
    当包含系统提供头文件的时候,就是用#include <>


递归函数:自己调用自己函数

// 1、计算 1 + 2 + 3 + ... + n
怎么写一个递归函数:
    1、找规律: fun(n) 与 fun(n - 1) 或fun(n + 1)
    2、确定函数返回、÷、的条件


  fun(n) = 1 + 2 + 3 + ... + n;
  fun(n - 1) =  1 + 2 + 3 + ... + (n -1);

  fun(n) = fun(n - 1) + n;

  fun(1) = 1



int sum(int n){
    if (n == 1) {
        return 1;
    }
    return sum(n - 1) + n;
}

// 计算n阶乘  1 * 2 * 3 ... * n
/*
   fun(n) = fun(n-1) * n
   fun(1) = 1

*/

int fun(int n)
{
    if (n == 1) {
        return 1;
    }
    return fun(n-1) * n;
}

//计算 x 的 y 次方
/*
  fun(x,y) = x * x *.. x;(y)
  fun(x,y-1) = x * x *.. x;(y -1)

  fun(x,y) = fun(x,y-1) * x;
  fun(x,1) = x;
*/

int pow1(int x,int y)
{
    if (y == 1) {
        return x;
    }
    return pow1(x,y-1) * x;
}




int main(int argc, const char * argv[])
{

    int result = sum(3);
    result = fun(4);
    result = pow1(2, 3);
    printf("result = %d\n",result);
    return 0;
}




作者: 庄得超    时间: 2014-8-25 15:39
恩恩 ,总结的不错,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2