栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言--函数、递归

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言--函数、递归

程序的调试实质上就是观察程序运行的中间结果。

函数可以视为一个可以被重复使用的代码片段;之所以有函数:1.可以避免频繁的复制粘贴代码。2.简化了代码的逻辑,方便程序员来理解代码。

函数的分类:1.自定义函数   2.库函数(不用自己写的函数)       标准库函数(strlen、scanf、system、printf......)。      系统库函数(sleep)      第三方库函数(数量更加庞大)

函数调用的时候,形参是实参的一份拷贝~         实参ab和形参xy没有任何的关系(唯一的联系就是形参xy创建的时候是通过ab来初始化的)。

 *x和a是完全等价的。通过解引用操作/间接访问操作

根据指针中的地址,找到对应的内存空间。

 

//1.如果是素数返回1,不是返回0
//int isprime(int num) {
//    if (num == 0) {
//        return 0;
//    }
//    if (num == 1) {
//        return 0;
//    }
//    for (int i = 2; i <= num; i++) {
//        if (num % i == 0) {
//            return 0;
//        }
//        else {
//            return 1;
//        }
//        }
//    }

//2.是闰年返回1,不是闰年返回-1
//int isyear(int year) {
//    if ((year % 4 == 0 && year % 100 == 0) || (year % 400 ==0)) {
//        return 1;
//    }
//    else {
//        return -1;
//    }
//}


//3.写一个函数,实现一个整形有序数组的二分查找。
//int isSearch(int arr[], int size, int toFind) {
//    int left = 0;
//    int right = size - 1;
//    int mid = (left + right) / 2;
//    if (arr[mid] < toFind) {
//        //放弃查找左边
//        left = mid + 1;
//    }
//    else if (arr[mid] > toFind) {
//        //放弃查找右边
//        right = mid - 1;
//    }
//    else {
//        return mid;
//        //找到了
//    }
//}

//4. 写一个函数,每调用一次这个函数,就会将num的值增加1。
void add(int* p) {
    *p += 1;
}
int main() {
    int num = 0;
    add(&num);
    printf("%dn", num);
    //printf("%dn", isSearch(100,56,1));
    //printf("%dn", isyear(2000));
    //printf("%dn", isprime(4));

函数的嵌套调用和链式访问 函数和函数之间可以有机的组合的。 链式访问 把一个函数的返回值作为另外一个函数的参数。 函数声明:extern 1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数 声明决定不了。 2. 函数的声明一般出现在函数的使用之前。要满足 先声明后使用 。 3. 函数的声明一般要放在头文件中的。 函数定义: 函数的定义是指函数的具体实现,交待函数的功能实现

#include <>与#include ""的区别:#include <>是在系统目录中查找头文件;#include ""是在当前项目所在的目录中查找头文件

#pragma once     在定义头文件的时候需要加上这个指令,防止一个头文件被多次调用(多次调用是没有必要的,反而会增加编译的开销)

函数调用其他函数就是嵌套调用。函数自己调用自己就是递归。

递归的代码看起来没有多少,但是执行过程特别复杂。递归的代码人脑分析起来特别困难。

void printNum(unsigned int num) {
    if (num >= 10) {
        printNum(num / 10);
    }
    printf("%d ",num % 10);
}

int main() {
    printNum(1234);

int mystrlen2(char* str) {
    if (str[0] == '') {
        return 0;
    }
    return mystrlen2(str + 1) + 1;
}
int main() {
    printf("%dn",mystrlen2("abcd"));

求字符串长度、求阶乘...既可以用循环来实现也可以用递归来实现~~  其实从理论上讲,循环和递归完全是等价的。任何一个递归程序都能转为循环,反之,任何一个循环程序也可以转成递归。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/297700.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号