• C语言学习-函数和递归函数


    C源程序是由函数组成的,有且只有一个主函数(main()函数)。

    一、函数

    1.自定义函数的书写格式:

    返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
    {
        函数体
    }
    例如:

     1 include <stdio.h>
     2 void test();
     3 
     4 int main() {
     5     test(); 
     6     return 0;
     7 }
     8 
     9 void test() {
    10 
    11   printf("hello world!");  
    12 
    13 }

    2.定义函数的目的

    将一个函数封装起来,方便以后调用

    3.定义函数的步骤

    函数名:函数叫什么名字

    函数体:函数是干啥的,里面包含了什么代码

    返回值类型:函数执行完毕后返回什么给调用者

    4.无参无返回值函数的定义

    格式:

    void 函数名() {

      函数体;

    }

    例如:

    void say(){
    
          printf("说话了,你怎么的!");
    }

    5.无参有返回值函数的定义
    格式:

    返回值类型  函数名(){

      函数体;

    }

    例如:

    int sum(){
        return 30;  
    }

    6.有参数无返回值函数的定义

    格式:

    void  函数名(参数类型  形式参数1, 参数类型  形式参数2......) {

      函数体;

    }

    例如:

    1 void printLine(int n){
    2     int i = 1;        
    3     while (i <= n){
    4          printf("---------");
    5          i++;
    6     }  
    7     
    8 }

    7.有参数有返回值函数的定义

    格式:

    返回值类型  函数名(参数类型  形式参数1, 参数类型  形式参数2......) {

      函数体;

    }

    例如:

    1 int sum(int a, int b){
    2     return  a + b;
    3 }

    二、递归函数

          一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。C语言允许函数 的递归调用。在递归调用中,主调函数又是被调函数。执行递归函数将反复调用其自身,每调用 一次就进入新的一层。

    void function(int x)
    {
        function(x);
    }
    • 自己调用自己
    • 存在一个条件能够让递归结束
    • 问题的规模能够缩小

    例如:

    获取用户输入的数字, 直到用户输入一个正数为止

     1 void inputNumber()
     2 {
     3     int number = -1;
     4     printf("请输入一个正数abc
    ");
     5     scanf("%d", &number);
     6     if (number < 0) {
     7 //        负数
     8         inputNumber();
     9     }else{
    10 //        正数
    11        printf("number = %d
    ", number);
    12     }
    13 }

    用递归求n的阶乘
    1 int factorial(int n){
    2     int result = 0; //定义变量用于存放阶乘的结果
    3     if (n==1) { //如果n=1的时候,1!的结果还是1
    4         result = 1;
    5     }else{
    6         result = factorial(n-1)*n;//如果不是1,阶乘=(n-1)!*n;
    7     }
    8     return result;
    9 }
     
  • 相关阅读:
    关于git修改和查看用户名邮箱
    Spring深入理解(三)
    Spring深入理解(二)
    Spring深入理解(一)
    jeecg开源快速开发
    关于面向对象的三大特性和五大基本原则
    关于Excel导入导出POI工具类
    关于Hanoi算法
    LOJ 530 最小倍数(数论)
    BZOJ 4242 水壶(BFS建图+最小生成树+树上倍增)
  • 原文地址:https://www.cnblogs.com/wlios/p/4596478.html
Copyright © 2020-2023  润新知