C語言 內聯函數 + 遞歸函數

函數分類

在這里插入圖片描述

內聯函數

1)內聯函數在編譯時將函數的代碼直接插入到調用它的地方,而不是通過函數調用的方式執行,從而減少了函數調用的開銷,提高了代碼的執行速度

2)使用 inline 關鍵字來聲明

3)將函數聲明為內聯函數只是給編譯器一個建議,告訴它將函數的代碼插入到調用的地方。編譯器可以選擇忽略內聯函數的建議,繼續將函數編譯為常規函數。

內聯函數的使用規則和特點:

在這里插入圖片描述

遞歸函數

遞歸函數是一種函數調用自身的技術。遞歸函數可以用于解決需要重復執行相同操作的問題。

遞歸函數包括兩部分:基本情況和遞歸調用:

在這里插入圖片描述

計算階乘
//遞歸計算階乘
unsigned int factorial(unsigned int n) 
{if (n == 0 || n == 1) {return 1;} else {return n * factorial(n - 1);}
}

在這里插入圖片描述

//循環計算階乘
unsigned int factorial(unsigned int n) 
{unsigned int result = 1;for (unsigned int i = 1; i <= n; ++i) {result *= i;}return result;
}
斐波那契數列
//遞歸方法
int fibonacci(int n) 
{if (n <= 1){return n;}return fibonacci(n-1) + fibonacci(n-2);
}

在這里插入圖片描述

//迭代方法
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;
}

避免頭文件重復包含

使用文件保護宏
#ifndef HEADER_FILE_NAME_H
#define HEADER_FILE_NAME_H// 頭文件的內容#endif // HEADER_FILE_NAME_H
使用 #pragma once
#pragma once// 頭文件內容

雖然 #pragma once 在大多數情況下提供了簡潔的頭文件包含機制,而且幾乎所有主流的編譯器都支持它,但它不是C或C++的標準預處理指令。因此,如果您希望代碼更具可移植性,可以繼續使用傳統的頭文件保護宏。

詳細教程可轉

愛編程的大丙

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212561.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212561.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212561.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小目標檢測模型設計的一點思考

1. 小目標的特性 目標之間的交疊概率比較低&#xff0c;即使有交疊&#xff0c;其IoU多數情況下也是比較小的 AI-TOD Tiny Person Dateset 小目標自身的紋理顯著度有強弱區別&#xff0c;但是總體來說紋理特征都較弱&#xff0c;很多時候需要借助一定的圖像上下文來幫助確認 …

Java解決島嶼周長問題

Java解決島嶼周長問題 01 題目 給定一個 row x col 的二維網格地圖 grid &#xff0c;其中&#xff1a;grid[i][j] 1 表示陸地&#xff0c; grid[i][j] 0 表示水域。 網格中的格子 水平和垂直 方向相連&#xff08;對角線方向不相連&#xff09;。整個網格被水完全包圍&am…

ssm校園論壇管理系統項目分享

校園論壇管理系統是基于java編程語言&#xff0c;mysql數據庫&#xff0c;ssm框架和idea工具開發&#xff0c;本系統主要分為學生用戶&#xff0c;管理員兩個角色&#xff0c;其中用戶可以注冊登陸系統&#xff0c;在線發帖&#xff0c;查看欄目帖子&#xff0c;回復帖子&#…

某音上很火的圣誕樹分享

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站。 效果截圖&#xff08;這里不給動態了&#xff0c;某音到處都是了&#xff09;&#xff1a; 源代碼&#xff1a; <script src"…

Spring Boot 3 集成 MyBatis詳解

MyBatis是一款開源的持久層框架&#xff0c;它極大地簡化了與數據庫的交互流程。與類似Hibernate的ORM框架不同&#xff0c;MyBatis更具靈活性&#xff0c;允許開發者直接使用SQL語句與數據庫進行交互。Spring Boot和MyBatis分別是兩個功能強大的框架&#xff0c;它們的協同使用…

Linux shell編程學習筆記34:eval 命令

0 前言 在JavaScript語言中&#xff0c;有一個很特別的函數eval&#xff0c;eval函數可以將字符串當做 JavaScript 代碼執行&#xff0c;返回表達式或值。 在Linux Shell 中也提供了內建命令eval&#xff0c;它是否具有JavaScript語言中eval函數的功能呢&#xff1f; 1 eval命…

GPIO的使用--USART串口通信--傳感器控制數據

目錄 一、串口通信 1、概念 2、原理圖 3、使用步驟 &#xff08;1&#xff09;尋找串口位置 &#xff08;2&#xff09;確定引腳編號 &#xff08;3&#xff09;編寫代碼 4、實驗結果 實驗代碼 main.c usart.c usart.h 一、串口通信 1、概念 串行接口是一種可以將…

DiffiT

本文首發于AIWalker&#xff0c;歡迎關注。 https://arxiv.org/abs/2312.02139 https://github.com/NVlabs/DiffiT 擴散模型以其強大的表達能力和高樣本質量在許多領域得到了新的應用。對于樣本生成&#xff0c;這些模型依賴于通過迭代去噪生成圖像的去噪神經網絡。然而&#x…

SAP UI5 walkthrough step8 Translatable Texts

在這個章節&#xff0c;我們會將一些文本常量獨立出一個資源文件 這樣的話&#xff0c;可以方便這些文本常量被翻譯成任意的語言 這種國際化的操作&#xff0c;我們一般命名為i18n 新建一個文件i18n.properties webapp/i18n/i18n.properties (New) showHelloButtonTextSay …

vue3項目實現文檔 JSON 格式和 Excel 表格的在線預覽,(智能搜索,未驗證)

若要實現文檔 JSON 格式和 Excel 表格的在線預覽&#xff0c;你可以使用第三方庫來實現。對于文檔 JSON 格式&#xff0c;你可以使用 vue-json-pretty 庫來展示美觀的 JSON 數據&#xff1b;對于 Excel 表格&#xff0c;你可以使用 vue-excel-viewer 庫來完成在線預覽。下面是一…

Java、Spring Boot和事務管理

引言 在現代應用程序開發中&#xff0c;確保數據的一致性和可靠性是至關重要的。Java作為一種強大的編程語言&#xff0c;通過其廣泛的生態系統和強大的庫支持&#xff0c;為開發人員提供了構建高性能應用程序的豐富工具。Spring Boot是一個基于Spring框架的項目&#xff0c;它…

圖像的均方差和信噪比計算

圖像的均方差和信噪比計算 一、均方差1、公式2、代碼 二、信噪比1、公式2、代碼 圖像的均方差和信噪比公式及代碼&#xff0c;代碼基于opencv和C實現。 一、均方差 均方誤差&#xff0c;英文簡稱&#xff1a;MSE&#xff0c;英文全稱&#xff1a;“Mean Square Error”。 衡量…

接口測試-Jmeter使用

一、線程組 1.1 作用 線程組就是控制Jmeter用于執行測試的一組用戶 1.2 位置 右鍵點擊‘測試計劃’-->添加-->線程(用戶)-->線程組 1.3 特點 模擬多人操作線程組可以添加多個&#xff0c;多個線程組可以并行或者串行取樣器(請求)和邏輯控制器必須依賴線程組才能…

「Verilog學習筆記」多bit MUX同步器

專欄前言 本專欄的內容主要是記錄本人學習Verilog過程中的一些知識點&#xff0c;刷題網站用的是牛客網 輸入數據暫存在data_reg中&#xff0c;使能信號data_en用打兩拍的方式跨時鐘域傳輸到時鐘域B&#xff0c;最后data_out根據使能信號更新數據。data_en信號在A時鐘域用一個D…

Redis | Redis入門學習介紹及常見原理剖析

關注wx&#xff1a;CodingTechWork Redis介紹 概述 Redis是NoSQL&#xff0c;是key-value分布式內存數據庫。 緩存 緩存是將數據從慢的介質換到快的介質上&#xff0c;提高讀寫效率和性能&#xff0c;并降低數據庫的讀寫成本。內存的速度一般都遠遠大于硬盤的速度&#xf…

三個臭皮匠(ctr,nerdctl,crictl)頂一個諸葛亮(docker)

文章目錄 containerd簡介 nerdctl簡介安裝精簡 Minimal 安裝完整Full 安裝啟動服務 命令參數容器運行容器列出容器詳情容器日志容器進入容器停止容器刪除鏡像列表鏡像拉取鏡像標簽鏡像導出鏡像導入鏡像刪除鏡像構建配置tab鍵配置加速配置倉庫http方式https方式 ctr簡介命令參數…

12、虛函數的應用、虛析構函數

12、虛函數的應用、虛析構函數 運行時類型信息(RTTI)動態類型轉換(dynamic_cast)typeid操作符 虛 析構函數空虛析構函數 一個類中&#xff0c;除了構造函數和靜態成員函數外&#xff0c;任何函數都可以被聲明為虛函數 運行時類型信息(RTTI) 動態類型轉換(dynamic_cast) 用于…

AMC8美國數學競賽歷年真題集在線練習操作指南和2024年備考建議

今天是2023年12月10日&#xff0c;距離2024年的AMC8美國數學競賽的舉辦還有40天時間。據六分成長了解&#xff0c;有一些孩子報名參加了AMC8的機構培訓班系統學習&#xff0c;也有一些孩子選擇了自己自學備考。 有家長問AMC8的培訓是否一定要參加機構的培訓班學習&#xff1f;…

基于SpringBoot+thymeleaf協同過濾算法山河旅游推薦系統(Java畢業設計)

大家好&#xff0c;我是DeBug&#xff0c;很高興你能來閱讀&#xff01;作為一名熱愛編程的程序員&#xff0c;我希望通過這些教學筆記與大家分享我的編程經驗和知識。在這里&#xff0c;我將會結合實際項目經驗&#xff0c;分享編程技巧、最佳實踐以及解決問題的方法。無論你是…

windows端口被占用怎么辦 怎么關閉那個占用的端口

目錄 這是出現的情況怎么解決了1.請打開這玩意2.輸入下面---查詢 先關端口的信息根據id獲得服務 上圖的8888 對應的ip 上圖就是134243.殺死進程134244.重啟服務 這是出現的情況 怎么解決了 1.請打開這玩意 2.輸入下面—查詢 先關端口的信息 netstat -ano過濾信息查詢想要的端…