C语言简单记-函数、递归

“C语言简单记”基于我之前学习过程当中作过的笔记、随笔,特地整理了一下,只是简单的记录了一些比较重要的知识点,不会去深刻探究,面向的是一些有语言基础的人查找阅读,还请见谅,谢谢~~~算法


函数

返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
{
    函数体
}
  • 主要做用:
    1.将一个经常使用的功能封装起来,方便之后调用
    2.提升代码重用率函数

  • 形参: 在定义函数时,函数名后面的小括号()中定义的变量称为形式参数,简称形参,形参必定是变量
    形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。所以,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。学习

  • 实参: 在调用函数时传入的值称为实际参数,简称实参,实参能够是常量,变量,表达式code

  • 注意点:递归

    1) 返回值能够和返回值类型不同,系统会对返回值进行自动类型转换(隐式转换)
    2) 若是函数没有返回值,那么返回值类型就写void
    3) 函数名称不能相同,形参,返回值类型不一样也不行,即不能重载
    4) c语言不容许函数嵌套
    5) 函数能够没有返回值类型,默认返回int类型
    6) 调用函数时传递的实参个数必须和函数的形参个数必须保持一致
  • return 0: 返回0表示程序正确结束,其余值表明程序非正常结束内存

  • argc: 系统传递进来的参数,默认为1开发

  • argv: 系统传递进来的参数的实际值,默认是程序的名称博客


递归练习

需求:要求用户输入一个大于0的数,如何不大于0一值提示,知道大于0为止

#include <stdio.h>

void scanNumber();

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

    scanNumber();
    return 0;
}


void scanNumber(){

    // 接收值
    printf("请输入一个大于0的数字:\n");
    int number = -1;
    scanf("%d", &number);

    // 判断
    if (number <= 0) {
        scanNumber();
    }else{
        printf("m=%d\n", number);
    }
    // 递归要有明确的结束条件,防止死循环
}

用递归算法求累加和、累乘io

#include <stdio.h>

int sum(int a); // 求累加和
int mul(int b);// 求累乘

int main(){
    // 接收值
    printf("请输入一个大于0的数字:\n");
    int number = -1;
    scanf("%d", &number);

    printf("sum = %d\n", sum(number));
    printf("mul = %d\n", mul(number));
    return 0;
}

int sum(int a){
    int result = 1;
    if(a == 1){
        return result;
    }else{
        return sum(a-1) + a;
    }
}
int mul(int b){
    int result = 1;
    if(b == 1){
    return result;
    }else{
        return uml(b-1) * b;
    }
}

函数的嵌套调用与递归调用有什么区别?

答:
    函数的嵌套是语言特性,递归是逻辑思想;

    函数嵌套就是容许函数中调用另外一个函数,

    递归经过函数嵌套来实现,本身调用本身,

    总的来讲,函数嵌套就是函数调用函数,递归就是函数调用本身,是函数嵌套的一个特例

更多关于iOS学习开发的文章请登录个人我的博客www.zhunjiee.com,欢迎前来参观学习class

相关文章
相关标签/搜索