C语言 内联函数 + 递归函数

函数分类

内联函数

1)内联函数在编译时将函数的代码直接插入到调用它的地方,而不是通过函数调用的方式执行,从而减少了函数调用的开销,提高了代码的执行速度
2)使用 inline 关键字来声明
3)将函数声明为内联函数只是给编译器一个建议,告诉它将函数的代码插入到调用的地方。编译器可以选择忽略内联函数的建议,继续将函数编译为常规函数。

内联函数的使用规则和特点:

递归函数

递归函数是一种函数调用自身 的技术。递归函数可以用于解决需要重复执行相同操作的问题。

递归函数包括两部分:基本情况和递归调用:
计算阶乘
c 复制代码
//递归计算阶乘
unsigned int factorial(unsigned int n) 
{
    if (n == 0 || n == 1) 
    {
        return 1;
    } 
    else 
    {
        return n * factorial(n - 1);
    }
}
c 复制代码
//循环计算阶乘
unsigned int factorial(unsigned int n) 
{
    unsigned int result = 1;
    for (unsigned int i = 1; i <= n; ++i) 
    {
        result *= i;
    }
    return result;
}
斐波那契数列
c 复制代码
//递归方法
int fibonacci(int n) 
{
    if (n <= 1)
    {
        return n;
    }
    return fibonacci(n-1) + fibonacci(n-2);
}
c 复制代码
//迭代方法
int fibonacci(int n) 
{
    if (n == 0)
    {
        return 0;
    }

    int prev = 0;
    int curr = 1;
    for (int i = 2; i <= n; i++) 
    {
        int next = prev + curr;
        prev = curr;
        curr = next;
    }
    return curr;
}

避免头文件重复包含

使用文件保护宏
c 复制代码
#ifndef HEADER_FILE_NAME_H
#define HEADER_FILE_NAME_H

// 头文件的内容

#endif // HEADER_FILE_NAME_H
使用 #pragma once
c 复制代码
#pragma once

// 头文件内容

虽然 #pragma once 在大多数情况下提供了简洁的头文件包含机制,而且几乎所有主流的编译器都支持它,但它不是C或C++的标准预处理指令 。因此,如果您希望代码更具可移植性,可以继续使用传统的头文件保护宏。

详细教程可转

爱编程的大丙

相关推荐
小浣熊熊熊熊熊熊熊丶6 小时前
《Effective Java》第25条:限制源文件为单个顶级类
java·开发语言·effective java
啃火龙果的兔子6 小时前
JDK 安装配置
java·开发语言
星哥说事6 小时前
应用程序监控:Java 与 Web 应用的实践
java·开发语言
等....7 小时前
Miniconda使用
开发语言·python
zfj3217 小时前
go为什么设计成源码依赖,而不是二进制依赖
开发语言·后端·golang
醇氧7 小时前
org.jetbrains.annotations的@Nullable 学习
java·开发语言·学习·intellij-idea
Java&Develop7 小时前
Aes加密 GCM java
java·开发语言·python
weixin_462446237 小时前
使用 Go 实现 SSE 流式推送 + 打字机效果(模拟 Coze Chat)
开发语言·后端·golang
JIngJaneIL7 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码7 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web